我在我的Android项目中使用Retrofit2。当我使用GET方法访问API端点并返回400级错误时,我可以在使用HttpLoggingInterceptor时看到错误内容,但是当我到达RetrofitOnResponse回调时,错误正文的字符串为空。我可以看到错误有一个主体,但在Retrofit回调的上下文中我似乎无法拉出该主体。有没有办法确保可以在那里访问body?谢谢,亚当编辑:我从服务器看到的响应是:{"error":{"errorMessage":"对于输入字符串:\"000001280_713870281\"","httpStatus":400}}我试图通过以下方式从响
我在Android上将Retrofit2与OkHttp一起用于HTTP请求。在这里,我正在执行带有文档上传的POST请求。我遇到了以下错误:D/OkHttp:D/OkHttp:D/OkHttp:D/OkHttp:Error500ServerErrorD/OkHttp:D/OkHttp:HTTPERROR500D/OkHttp:Problemaccessing/v1/documents.Reason:D/OkHttp:ServerErrorCausedby:org.apache.cxf.interceptor.Fault:Couldn'tdeterminetheboundary
TLDR:有没有办法强制OkHttp正确处理意外/未请求的100ContinueHTTP响应?我在Android上使用OkHttp3.8.1发布到行为不佳的服务器。即使请求不包含“Expect:100-continue”header,网络服务器也会返回100Continue响应。OkHttp并没有继续发送请求主体,然后获得实际的(200)响应,而是停在那里并在我的okhttp.Callback中发回100Continue响应。我尝试在请求中明确包含“Expect:100-continue”以触发OkHttp的逻辑,但服务器(可能由于某些错误)声称header格式错误并拒绝请求。我也尝试
我正在使用Rx来批处理对API的请求。当前有5个调用正在进行中。我的代码中有一行在响应返回时打印出来。执行代码时,我经常发现只打印了4行,这意味着5个调用并未全部完成。查看logcat,我看到以下消息:read:unexpectedEOF!我在github上遇到了这个问题:https://github.com/square/retrofit/issues/1228我尝试在正在使用的@GET请求之上添加@Streaming,但这似乎没有解决问题。我可以从哪里开始调试它,可能是什么问题? 最佳答案 我在这里找到了解决方案https://
我正在尝试制作Android应用程序,我可以在其中获取和解析HTML(来自没有API的网站)。我正在使用OkHttp。该站点具有不受信任(但有效)的证书。我得到:java.security.cert.CertPathValidatorException:Trustanchorforcertificationpathnotfound.我已经设置了官方方式(https://developer.android.com/training/articles/security-ssl#java),现在我需要将它与OkHttpClient链接。我试过了OkHttpClientclient=newOk
我最近切换到OkHttp。切换后,下面的代码进行上传。RequestBodyrequestBody=newMultipartBuilder().type(MultipartBuilder.FORM).addPart(Headers.of("Content-Disposition","form-data;name=\"qqfile\""),RequestBody.create(MediaType.parse(filename),newFile(filename))).build();如果比较图像,第二个图像有multipartFilessize=0。它应该是size=1。如何使用OkHt
如果我有这个:RequestBodyformBody=newFormEncodingBuilder().add("email","Jurassic@Park.com").add("tel","90301171XX").build();但我不想单独添加键值对,而是想添加一个大小可变的映射类型变量,我该如何添加它? 最佳答案 自己遍历map并添加每个键/值怎么样?示例:privateFormEncodingBuildermakeBuilderFromMap(finalMapmap){FormEncodingBuilderformBody
我正在使用OkHttpGET请求下载文件:importcom.squareup.okhttp.OkHttpClient;importcom.squareup.okhttp.Request;importcom.squareup.okhttp.Response;...OkHttpClientokClient=newOkHttpClient();Requestrequest=Request.Builder().url(url).get();Responseresponse=okClient.newCall(request).execute();我从响应体中读取并用BufferedInputS
IP地址改变或连接失败如何正确重连?我正在尝试重新连接okhttp-ws.....@OverridepublicvoidonFailure(IOExceptione,okhttp3.Responseresponse){try{connecting();}catch(Exceptione1){Timber.e(e1,"onFailure");}}@OverridepublicvoidonClose(intcode,Stringreason){Timber.d("Connectionunexpectedlyclosed");connecting();}publicvoidconnectin
我是OkHttp库的新手。在使用这个库时,我正在下载网页的源代码。这是我的代码:Requestrequest=newRequest.Builder().url(urls[0]).build();try{Responseresponse=okHttpClient.newCall(request).execute();source=response.body().toString();Log.i("ppp",source);}catch(IOExceptione){source=e.getMessage();e.printStackTrace();}但是正在向我展示这个响应:07-2711