다른 라이브러리로 변경하려고 시도했지만 이미 성공을 거두고 다른 여러 가지 작업을 시도했지만 시도해 보겠습니다.Retrofit2 형식이 잘못되었습니다.
저는 3 개의 다른 URL에 2 개의 GET 및 2 개의 POST를 만드는 앱이 있습니다. 마지막으로 문제가 있습니다. 나는이 문제를 설명하기 전에 내가 이미 @FormUrlEncoded
과 Content-Type
와 (Call<ResponseBody>
으로 무언가 Call<String>
을 시도, 또는 @Field
으로 페이로드를 보내는 것을 명확히하고자,
@Headers({
"Accept: text/html",
"Accept-Encoding: gzip, deflate, br",
"Accept-Language: es-ES,es;q=0.8",
"Cache-Control: no-cache",
"Content-Type: application/x-www-form-urlencoded"
})
@FormUrlEncoded
@POST("index.php?operacion=consulta")
Call<String> postRaiaSearch(@Header("Cookie") String cookie, @Field("microchip") String microchip);
그리고 :
나는이 개조 POST 방법을 헤더는 application/x-www-form-urlencoded
)이고 @Body
은 RequestBody
입니다.
그러나 모든 것이 나에게 잘못된 형식의 응답을 제공합니다.
그리고 개조 나에게 주시는 몬스터 : 여기
은 멋지게 형식의 고급 REST 클라이언트 응답 본문의 샘플입니다처음 보았 듯이, 웹은 JSON 대신 HTML을 반환하지만, 난 그냥 평범한 일반 텍스트로 얻을 수 있다고 생각했지만 잘 진행되지 않았다.
public static Retrofit getRaiaApi() {
if (raiaRetrofit == null) {
raiaRetrofit = new Retrofit.Builder()
.baseUrl(RAIA_URL)
.addConverterFactory(ScalarsConverterFactory.create())
.build();
}
return raiaRetrofit;
}
그리고 나는 또한 .addConverterFactory(GsonConverterFactory.create())
를 추가하거나합니다 (GSON 일 만에) 스칼라 라인을 삭제, 또는 단지 모두 삭제 시도 :
이 내가 개조 개체를 만든 방법입니다 그들의.
난 당신이 정말 POST 메소드를 호출하는 것 방법을 필요가 있다고 생각하지 않지만, 어쨌든 붙여 넣기합니다:
private void nextRaiaSearch(String header) {
callRaiaSearch = apiInterfaceRaia.postRaiaSearch(header, chipInput);
callRaiaSearch.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
Log.v("call", "onResponse");
Log.v("call", response.body());
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Log.v("call", "onFailure");
}
});
}
난 그냥 이것에 대한 개조의 대신 발리 또는 어떤 다른 일이 뭔가를 시도해야 하나의 요청? 만든
수입품은 다음과 같습니다
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:converter-scalars:2.3.0'
어떤 유형의 API를 사용하고 있습니까 (서버에 데이터를 보내거나 서버에서 데이터를 수신 할 수 있습니까). GET 또는 POST –
POST이고 응답을 받기를 원합니다.하지만 주된 문제는 웹에 API를 사용하면 웹의 전체 HTML을 제공하므로 기꺼이 가져 가서 원하는 값을 추출 할 수 있지만 Android에서 제공하는 형식은 다이아몬드와 심문으로 가득합니다. – JMedinilla
요청의 콘텐츠 유형을''Content-Type : text/plain''으로 설정하고 Gson 변환기를 추가하는 이유는 무엇입니까? "Content-Type : application/json"이되어서는 안되며, 이는 기본적으로 개장 된 것입니다. – Fred