gpt4 book ai didi

java - 安卓/Java : Problem with sending param and receiving JSON response with RetroFit in POST

转载 作者:太空宇宙 更新时间:2023-11-04 09:06:33 25 4
gpt4 key购买 nike

我想使用RetroFitPOST中发送参数,但无法得到解决方案。

我只想传递一个 URL,其中包含带有键和值的参数,并获取类型的 JSON 答案

{"result":[{"id":196,"CREATION_DATE":"2020-01-22T14:33:49.000Z"}]}  

这是我的代码改造:

public interface RetrofitInterface {

@Headers({"Content-type: application/json" , "Accept : application/json"})
@Streaming
@POST("https://xxx.newtotelapps.fr:5000/device/listEvent")
Call<JSONObject> getListEvent(@Body JSONObject jsonObject);
}

我的主要代码:

                JSONObject params2 = new JSONObject();
try {
params2.put("CODE_USER", UserCode);
} catch (JSONException e) {
e.printStackTrace();
}

CookieJar cookieJar2 = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(getApplicationContext()));

OkHttpClient client2 = new OkHttpClient.Builder()
.cookieJar(cookieJar2)
.build();

Retrofit retrofit3 = new Retrofit.Builder()
.baseUrl("https://xxx.newtotelapps.fr:5000/device/listEvent/")
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();

RetrofitInterface downloadService2 = retrofit3.create(RetrofitInterface.class);

Call<JSONObject> call2 = downloadService2.getListEvent(params2);

call2.enqueue(new Callback<JSONObject>() {
@Override
public void onResponse(Call<JSONObject> call, Response<JSONObject> response) {
//displaying the message from the response as toast


System.out.println("test ");

}

@Override
public void onFailure(Call<JSONObject> call, Throwable t){
System.out.println(t.toString());
}
});

我收到此错误消息:java.lang.IllegalArgumentException: header 名称中的 6 处出现意外的字符 0x20:Accept

编辑:我抑制了“Accept”和“:”之间的空格,现在我收到了该错误消息:java.io.IOException: https://xxx.newtotelapps.fr:5000/... 上的流意外结束

最佳答案

编辑:

0x20 字符

空格字符,表示单词之间的空格,由键盘的空格键产生,由代码 0x20(十六进制)表示,被视为非打印图形(或不可见图形)而不是控制字符。

复制以下代码:

public interface RetrofitInterface {

@Headers({"Content-type: application/json" , "Accept: application/json"})
@Streaming
@POST("https://xxx.newtotelapps.fr:5000/device/listEvent")
Call<JSONObject> getListEvent(@Body JSONObject jsonObject);

}

您错误地在“接受:”后保留了空格。执行此操作“接受:

错误解决方案: java.io.IOException:https://xxx.newtotelapps.fr:5000/... 上的流意外结束

使用Google Gson库,将其添加到build.gradle中:

dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
}

使用: 导入 com.google.gson.JsonObject;

代替: 导入 org.json.JSONObject;

希望你能明白。

否则在第二种情况下可能会发生错误:

您需要在 header 中设置Connection:close

@Headers({"Content-type: application/json" , "Accept: application/json", "Connection: close"})

第三种情况也可能发生错误:

有服务器端问题...您需要在服务器端脚本中设置 header('Content-Length: '.$length);

关于java - 安卓/Java : Problem with sending param and receiving JSON response with RetroFit in POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60167003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com