Java OkHttp3在Linux和Windows上的不同行为
我有一些在windows平台上正常工作的代码,但是,这些代码在Linux上给出了不同的行为 我使用以下代码向HTTP服务器提交请求以获取一些消息。我所做的如下Java OkHttp3在Linux和Windows上的不同行为,java,okhttp,Java,Okhttp,我有一些在windows平台上正常工作的代码,但是,这些代码在Linux上给出了不同的行为 我使用以下代码向HTTP服务器提交请求以获取一些消息。我所做的如下 在本地windows计算机上部署代码,然后触发请求并获取服务器响应 参数: {“articleid”:“endtime”:“2019-10-29T18:00:00”,“starttime”:“2019-10-29T16:00:00”,“areaid”:“title”:“pageIndex”:“1”} 服务器响应: {“结果”:1,“错误代
okhttp-3.10.0.jar
okio-1.14.0.jar
netty-codec-http-4.1.31.Final.jar
httpcore-nio-4.4.10.jar
httpcore-4.4.10.jar
httpclient-4.5.6.jar
httpasyncclient-4.1.4.jar
public static String okHttpPost(String requestUrl,Map<String,String> map,String orgId,String taskID) throws IOException {
String exceptionMessage="";
String responseResult="";
try {
FormBody.Builder newFormBody = new FormBody.Builder();
Set<String> keys = map.keySet();
for(String key:keys){
newFormBody.add(key,map.get(key));
}
RequestBody body = newFormBody.build();
log.info("server url : "+requestUrl+";paramters:"+new ObjectMapper().writeValueAsString(map));
Request request = new Request.Builder()
.url(requestUrl)
.post(body)
.build();
Call call = okHttpClient.newCall(request);
Response response = call.execute();
if (response.code() != 200) {
exceptionMessage = "request failed, taskID:" + taskID + "orgid:" + orgId + "response mesage:"+response.toString();
log.info(exceptionMessage);
}
responseResult = response.body().string();
log.info("server url : " + requestUrl + ", reponse messages:"+responseResult);
return responseResult;
} catch (IOException e) {
e.printStackTrace();
}finally {
if (!responseResult.contains("token")) {
do some thing;
}
}
return null;
}
公共静态字符串okHttpPost(字符串requestUrl、映射映射、字符串orgId、字符串taskID)引发IOException{
字符串exceptionMessage=“”;
字符串responseResult=“”;
试一试{
FormBody.Builder newFormBody=新FormBody.Builder();
Set keys=map.keySet();
用于(字符串键:键){
newFormBody.add(key,map.get(key));
}
RequestBody=newFormBody.build();
log.info(“服务器url:+requestUrl+”;参数:+new ObjectMapper().writeValueAsString(map));
Request Request=newrequest.Builder()
.url(请求url)
.职位(机构)
.build();
Call Call=okHttpClient.newCall(请求);
Response=call.execute();
如果(response.code()!=200){
exceptionMessage=“请求失败,taskID:+taskID+”orgid:+orgid+”响应表:“+response.toString()”;
log.info(例外消息);
}
responseResult=response.body().string();
log.info(“服务器url:+requestUrl+”,响应消息:+responseResult);
返回响应结果;
}捕获(IOE异常){
e、 printStackTrace();
}最后{
如果(!responseResult.包含(“令牌”)){
做一些事情;
}
}
返回null;
}
你能解释一下为什么相同的代码行为在windows和Linux平台上不同吗?如何更改代码以使其在Linux上正常工作 使用OkHttp的日志拦截器?这可以显示每个请求之间的全部差异。感谢Wilson,OkHttps的loggin拦截器非常有用。问题解决了,该行为是由服务器端的某些特殊代码逻辑引起的,与平台差异无关。