Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为OKHTTP格式编写类似的Retrofilt代码?_Android_Retrofit_Retrofit2_Okhttp - Fatal编程技术网

Android 如何为OKHTTP格式编写类似的Retrofilt代码?

Android 如何为OKHTTP格式编写类似的Retrofilt代码?,android,retrofit,retrofit2,okhttp,Android,Retrofit,Retrofit2,Okhttp,我的OKHttp代码运行良好,但有时无法进入队列。它没有显示任何关于它的信息。我正在尝试用改型语法转换相同的代码。有人能帮我找到正确的语法吗 文件1/2/3下面是图像文件路径 OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("text/plain");

我的OKHttp代码运行良好,但有时无法进入队列。它没有显示任何关于它的信息。我正在尝试用改型语法转换相同的代码。有人能帮我找到正确的语法吗

文件1/2/3下面是图像文件路径

OkHttpClient client = new OkHttpClient().newBuilder()
                    .build();
            MediaType mediaType = MediaType.parse("text/plain");
            RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
                    .addFormDataPart("photos1", String.valueOf(file1),
                            RequestBody.create(MediaType.parse("application/octet-stream"),
                                    new File(String.valueOf(file2)) ))
                    .addFormDataPart("photos2", String.valueOf(file2),
                            RequestBody.create(MediaType.parse("application/octet-stream"),
                                    new File(String.valueOf(file3)) ))
                    .addFormDataPart("photos3", String.valueOf(file3),
                            RequestBody.create(MediaType.parse("application/octet-stream"),
                                    new File(String.valueOf(file1)) ))
                    .addFormDataPart("product_name",txtprodname.getText().toString())
                    .addFormDataPart("description",txtdesc.getText().toString())
                    .addFormDataPart("product_cost",txtprice.getText().toString())
                    .addFormDataPart("tax_value",spntax.getSelectedItem().toString())
                    .addFormDataPart("within_city_cost",txtcostwithincity.getText().toString())
                    .addFormDataPart("outside_city_cost",txtcostoutsideincity.getText().toString())
                    .addFormDataPart("user_id",String.valueOf(user_id))
                    .addFormDataPart("category_name", spncategory.getSelectedItem().toString())
                    .addFormDataPart("tax_name",taxname)
                    .addFormDataPart("business_name", business_name)
                    .addFormDataPart("youtube_link", txtyoutube.getText().toString())
                    .addFormDataPart("length", txtL.getText().toString())
                    .addFormDataPart("width", txtW.getText().toString())
                    .addFormDataPart("height", txtH.getText().toString())
                    .addFormDataPart("volumetric_weight", txtwt.getText().toString())
                    .build();

            Request request = new Request.Builder()
                    .url("https://<myip>/api/productapi/")
                    .method("POST", body)
                    .build();

client.newCall(request).enqueue(new okhttp3.Callback() .... rest of the code.
OkHttpClient=new-OkHttpClient().newBuilder()
.build();
MediaType MediaType=MediaType.parse(“文本/普通”);
RequestBody body=new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart(“photos1”,String.valueOf(file1),
create(MediaType.parse(“应用程序/八位字节流”),
新文件(String.valueOf(file2)))
.addFormDataPart(“photos2”,String.valueOf(file2),
create(MediaType.parse(“应用程序/八位字节流”),
新文件(String.valueOf(file3)))
.addFormDataPart(“photos3”,String.valueOf(file3),
create(MediaType.parse(“应用程序/八位字节流”),
新文件(String.valueOf(file1)))
.addFormDataPart(“产品名称”,txtprodname.getText().toString())
.addFormDataPart(“说明”,txtdesc.getText().toString())
.addFormDataPart(“产品成本”,txtprice.getText().toString())
.addFormDataPart(“税值”,spntax.getSelectedItem().toString())
.addFormDataPart(“在城市成本内”,txtcostwithincity.getText().toString())
.addFormDataPart(“外部城市成本”,txtcostoutsideincity.getText().toString())
.addFormDataPart(“用户id”,字符串.valueOf(用户id))
.addFormDataPart(“类别名称”,spnCategray.getSelectedItem().toString())
.addFormDataPart(“税名”,税名)
.addFormDataPart(“业务名称”,业务名称)
.addFormDataPart(“youtube_链接”,txtube.getText().toString())
.addFormDataPart(“长度”,txtL.getText().toString())
.addFormDataPart(“宽度”,txtW.getText().toString())
.addFormDataPart(“高度”,txtH.getText().toString())
.addFormDataPart(“体积重量”,txtwt.getText().toString())
.build();
Request Request=newrequest.Builder()
.url(“https:///api/productapi/")
.方法(“后”,正文)
.build();
client.newCall(request).enqueue(new-okhttp3.Callback()..)代码的其余部分。
我无法找出类似的语法进行改装。如有任何帮助,将不胜感激

问候,,
PD

如果您需要使用改型发送API中的任何文件,则需要遵循以下步骤

  • 改装初始化创建类ApicClient
  • 创建一个接口来列出API键,考虑接口名称APiInterfacr。 最重要的是将RequerstBody的数据类型分配给所有字符串/Int数据…并将MultiPartBody.Part仅分配给文件。。 用户是我的对象类您需要创建您的对象类并替换
  • 现在调用函数
  • 要添加到生成文件中的依赖项

  • 现在您可以开始了…:-)

    好,我将尝试执行与我的代码相关的命令。@user15226396好,如果您得到答案,请将其标记为已接受。。。
    public class APIClient {
        public static Retrofit retrofit;
    
        public static Retrofit getClient() {
            HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).connectTimeout(120, TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS).writeTimeout(120, TimeUnit.SECONDS).build();
            Gson gson = new GsonBuilder()
                    .setLenient()
                    .create();
            if (retrofit == null) {
                retrofit = new Retrofit.Builder()
                        .baseUrl("https://myapi.com")
                        .addConverterFactory(GsonConverterFactory.create(gson))
                        .client(client)
                        .build();
            }
            return retrofit;
        }
    
    
    public interface APIInterface {
        @Multipart
        @POST("xyznode")
        Call<Users> updateUser(@Part("id") RequestBody id,
                               @Part("name") RequestBody name,
                               @Part("email") RequestBody email,
                               @Part("password") RequestBody password,
                               @Part("paypal_address") RequestBody paypal_address,
                               @Part("user_location") RequestBody user_location,
                               @Part("role_id") RequestBody role_id,
                               @Part MultipartBody.Part image_url);
    
    }
    
      public void updateUser(RequestBody id, RequestBody name, RequestBody email, RequestBody password, RequestBody paypal_address, RequestBody user_location, MultipartBody.Part profile_photo_url, RequestBody role) {
            if (NetworkConnectivity.isOnline()) {
                Call<Users> call = apiInterface.updateUser(id, name, email, password, paypal_address, user_location, role, profile_photo_url);
                call.enqueue(new Callback<Users>() {
                    @Override
                    public void onResponse(Call<Users> call, Response<Users> response) {
                        if (response.isSuccessful()) {
                         
               //Do your stuff here...
                        }
                    }
    
                    @Override
                    public void onFailure(Call<Users> call, Throwable t) {
    //
                    }
                });
            } 
        }
    
                           RequestBody fileReqBody = RequestBody.create(MediaType.parse("image/*"), file);
                            profileImage = MultipartBody.Part.createFormData("profile_photo_url", file.getName(), fileReqBody);
                            RequestBody id = RequestBody.create(MediaType.parse("multipart/form-data"), preferencesHandler.getUid());
                            RequestBody name = RequestBody.create(MediaType.parse("multipart/form-data"), txt_name);
                            RequestBody email = RequestBody.create(MediaType.parse("multipart/form-data"), txt_email);
                            RequestBody password = RequestBody.create(MediaType.parse("multipart/form-data"), txt_password);
                            RequestBody roleid = RequestBody.create(MediaType.parse("multipart/form-data"), preferencesHandler.getRole());
                            RequestBody country = RequestBody.create(MediaType.parse("multipart/form-data"), txt_country);
                            RequestBody paypal = RequestBody.create(MediaType.parse("multipart/form-data"), txt_paypal);
    
    onUpdateUser(id, name, email, password, paypal, country, roleid, profileImage);
    
    //Retrofit Dependency
        implementation 'com.squareup.retrofit2:retrofit:2.1.0'
        implementation 'com.google.code.gson:gson:2.6.2'
        implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
        implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1'