Форум для тех, кто программирует под Android
Anonymous
Модернизация пост необработанной струны корпус
Сообщение
Anonymous » 07 окт 2025, 21:06
Я использую Retrofit для отправки запроса POST на сервер. Тело POST
должно быть в форме jdata={"key1":"value1",... вместе с заголовком Content-Type, имеющим значение application/x-www-form-urlencoded. Я нашел похожий вопрос, но принятый ответ не работает.
Вот что я пробовал:
Мой интерфейс
Код: Выделить всё
public interface APIHandler {
@Headers("Content-Type: application/x-www-form-urlencoded")
@FormUrlEncoded
@POST(URL)
Call getdata(@Field("jdata") String jdata);
}
< /code>
Функция вызова < /p>
public void load() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("BASE_URL")
.addConverterFactory(GsonConverterFactory.create())
.build();
// prepare call in Retrofit 2.0
APIHandler iAPI = retrofit.create(APIHandler.class);
String requestBody = "{\"id\":\"value\",\"id1\":\"value2\"}"
Call call = iAPI.getData(requestBody);
call.enqueue(new Callback() {
@Override
public void onResponse(Call c, Response response) {
if (response.isSuccess()) {
ResponseBody result = response.body();
String gs = new Gson().toJson(result);
Log.d("MainActivity", "response = " + gs + " status: " + statusCode);
} else {
Log.w("myApp", "Failed");
}
}
@Override
public void onFailure(Call c, Throwable t) {
}
});
}
Но я получаю ответ = null и status = 200 . Что я делаю не так? Ожидаемый ответ - это всего лишь строка, а не массив JSON.
Подробнее здесь:
https://stackoverflow.com/questions/358 ... tring-body
1759860375
Anonymous
Я использую Retrofit для отправки запроса POST на сервер. Тело POST [b]должно быть в форме jdata={"key1":"value1",...[/b] вместе с заголовком Content-Type, имеющим значение application/x-www-form-urlencoded. Я нашел похожий вопрос, но принятый ответ не работает. Вот что я пробовал: Мой интерфейс [code]public interface APIHandler { @Headers("Content-Type: application/x-www-form-urlencoded") @FormUrlEncoded @POST(URL) Call getdata(@Field("jdata") String jdata); } < /code> Функция вызова < /p> public void load() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("BASE_URL") .addConverterFactory(GsonConverterFactory.create()) .build(); // prepare call in Retrofit 2.0 APIHandler iAPI = retrofit.create(APIHandler.class); String requestBody = "{\"id\":\"value\",\"id1\":\"value2\"}" Call call = iAPI.getData(requestBody); call.enqueue(new Callback() { @Override public void onResponse(Call c, Response response) { if (response.isSuccess()) { ResponseBody result = response.body(); String gs = new Gson().toJson(result); Log.d("MainActivity", "response = " + gs + " status: " + statusCode); } else { Log.w("myApp", "Failed"); } } @Override public void onFailure(Call c, Throwable t) { } }); } [/code] Но я получаю ответ = null и status = 200 . Что я делаю не так? Ожидаемый ответ - это всего лишь строка, а не массив JSON. Подробнее здесь: [url]https://stackoverflow.com/questions/35871006/retrofit-post-raw-string-body[/url]