Android 如何为OKHTTP格式编写类似的Retrofilt代码?
我的OKHttp代码运行良好,但有时无法进入队列。它没有显示任何关于它的信息。我正在尝试用改型语法转换相同的代码。有人能帮我找到正确的语法吗 文件1/2/3下面是图像文件路径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");
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中的任何文件,则需要遵循以下步骤
现在您可以开始了…:-)好,我将尝试执行与我的代码相关的命令。@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'