2
을 나는 MultiPart
request
OkHttp 작업 한 :개조 2.0 다중
multi = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("email", m)
.addFormDataPart("password", p)
.addFormDataPart("user_name", n)
.addFormDataPart("user_phone", phone)
.addFormDataPart("photo", "avatar.jpg", RequestBody.create(MediaType.parse("image/jpg"), imgToArray(bmpChosenPic)))
//.addFormDataPart("photo", "1")
.build();
request = new Request.Builder()
.url(Utils.TEST_BASE_URL + "" + REG_URL)
.post(multi)
.build();
client.newCall(request).enqueue(new Callback()...
가 지금은 Retrofit 2.0
를 사용하여 동일한 기능을 만들려고. 다음은 서비스의 :
@Multipart
@POST("/api/v1/auth/register")
Call<Registration> registration (@Part("email") RequestBody email,
@Part("password") RequestBody password,
@Part("user_name") RequestBody userName,
@Part("photo") RequestBody url,
@Part("phone") RequestBody phone);
그래서이 interface
에 따라 내가 시도가 만들 수는 Call
:
RequestBody photoR = RequestBody.create(MediaType.parse("image/jpg"), imgToArray(bmp));
RequestBody nameR = RequestBody.create(MediaType.parse("text/plain"), name);
RequestBody emailR = RequestBody.create(MediaType.parse("text/plain"), email);
RequestBody passR = RequestBody.create(MediaType.parse("text/plain"), pass);
RequestBody phone = RequestBody.create(MediaType.parse("text/plain"), "");
RegistaionI service = ServiceGenerator.createService(RegistaionI.class);
retrofit2.Call<Registration> call = service.registration(
emailR,
passR,
nameR,
photoR,
phone);
call.enqueue(new retrofit2.Callback<Registration>() {
@Override
public void onResponse(retrofit2.Call<Registration> call, retrofit2.Response<Registration> response) {
RegistrationData data = response.body().getData();
System.out.println(data.getId());
}
@Override
public void onFailure(retrofit2.Call<Registration> call, Throwable t) {
}
});
그러나, 불행하게도, 내가이 줄 NPE를 얻을 : 그래서
RegistrationData data = response.body().getData();
내 코드에서 문제가 있다고 가정 해 봅시다. SOF 및 개보수 지점에서 관련 주제를 읽었으며 GitHub
에 있지만 작업 솔루션을 찾지 못했습니다. 도와주세요.
감사 : 나는 이미지 또는 동영상을 업로드하려면이 옵션을 사용하게. 그냥 몇 가지 주제에 대한 답변을 찾았습니다. –