当前位置: 首页 > 知识库问答 >
问题:

OkHttp3未返回响应

章博耘
2023-03-14

有很多使用OkHTTP3发出请求的例子,但是,我仍然无法发出正确的请求。据我所知,我的设置是正确的。

我不断收到如下所示的回复。我不知道他们是什么意思。

{“ContentLength”:238,“ContentTypeString”:“Application/JSON”,“Source”:{“Buffer”:{“Size”:0},“Closed”:False,“Source”:{“BytesRead”:0,“Completed”:False,“Delegate”:{“Closed”:False,“Finished”:True,“MaxByteCount”:16777216,“ReadBuffer”:{“Head”:{“Data”:[123,34,105,115,85,115,101,114,83,117,98,115,

我发出请求的方式是传递一个请求对象,然后使用RequestBody.Create()方法将请求对象转换为OkHttp RequestBody对象。我开始认为我的请求主体是错误的,所以我硬编码了一个json字符串。我也收到了同样的结果。我做错了什么?我必须在AsyncTask中包装这个吗?我不认为使用enqueue会出现这种情况。

private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    public void createPostRequest(Request request, final ResultCallback callback,
                                  String url, HashMap<String, String> header) {
        // create gson object
        final Gson gson = new Gson();
        String testRequest = "{\"fName\": \"John\",\"lName\": \"Doe\",\"phoneNumber\": \"5555555\",\"isValidated\": \"false\",\"city\": \"Los Angeles",\"street\": \"Sesame Street\"}";

        // set header
        Headers headers = Headers.of(header);
        // form request body
        RequestBody requestBody = RequestBody.create(JSON, testRequest );
        // form request.
        Request okHttpRequest = new Request.Builder()
                .url(url)
                .post(requestBody)
                .headers(headers)
                .build();

        // prepares the request to be executed
        client.newCall(okHttpRequest).enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(@NonNull Call call, @NonNull IOException e) {
                // handle error
            }

            @Override
            public void onResponse(@NonNull Call call, @NonNull Response response) {
                if (response.isSuccessful()) {
                    String jsonString = gson.toJson(response.body());
                    // jsonString is gibberish as posted above
                }
            }
        });
    }

我在日志中没有收到任何错误。这就是从OkHttp返回的全部内容

2019-06-25 12:46:27.435 232 19-23248/com.demo.android.地址W/oid.address.dem:访问隐藏方法lcom/android/org/conscrypt/opensslsocketimpl;->getalpnselectedProtocol()[B(light greylist,reflection)2019-06-25 12:46:27.698 232 19-23248/com.demo.android.地址W/oid.address.dem:无法解析LOKHTTP3/internal/http/realresponseBody;注释类2132 2019-06-25 demo.android.地址W/oid.address.dem:无法解析lokhttp3/internal/http/realresponsebody;注释类2132 2019-06-25 12:46:27.702 232 19-23248/com.demo.android.地址W/oid.address.dem:无法解析lokhttp3/responsebody;注释类2132 2019-06-25 12:46:27.703-23248/com.demo.android.address w/oid.address.dem:无法解析lokio/buffer;注释类2132 2019-06-25 12:46:27.708 232 19-23248/com.demo.android.address w/oid.address.dem:无法解析Lokio/buffer;注释类2132

共有1个答案

明星剑
2023-03-14

您将转换为json而不是FROM。这是怎么回事

String str = gson.fromJson("\"abc\"", String.class);
 类似资料:
  • 问题内容: 我想向mysql发送查询并获取一个数组。但是,无论我怎样做,我都无法使它起作用。这是我的代码: 它总是说,。我究竟做错了什么? 问题答案: Flask抛出此异常,因为您的视图未返回任何内容。从您的观点返回响应: 要返回MySQL结果,也许将这些行连接到一个字符串中: 或定义一个模板并返回渲染的模板。 请注意,您确实不希望对参数使用字符串插值, 尤其是 在Web应用程序中。改用SQL参数

  • 问题内容: 我正在使用Node的模块发出 HTTP 请求,但是在上,返回的块似乎并不满足完整的请求响应。这是我的代码: 有没有办法在结束请求之前等待完整的输出?难道我做错了什么?谢谢! 问题答案: 您还应该收听“结束”事件

  • 我正在尝试从JavaScript应用程序向另一个应用程序中的endpoint进行API调用。 当我调用endpoint时,我得到了状态代码和消息,但我无法以任何方式访问响应体。我已经尝试了不同的方法来获取数据,但似乎没有一种方法对我有效。 在方法“someAction”中,我想使用来自API调用的响应/结果中的数据。我在代码中添加了单个日志行打印的输出。 如何在定义“result.status/m

  • 本文向大家介绍symfony2 返回404响应,包括了symfony2 返回404响应的使用技巧和注意事项,需要的朋友参考一下 示例 当在服务器上找不到资源时,将返回404响应。在Symfony中,可以通过引发NotFoundHttpException异常来创建此状态。为了避免use在控制器内部添加多余的语句,请使用类createNotFoundException()提供的Controller  

  • 我想使用GooglePlaceAPI和自动完成视图。我有开发者控制台上的android和浏览器密钥。但当我尝试这些键API时,它返回空响应。 Logcat: D/Volley:[2651]a.a:请求的HTTP响应= 我的代码: 在onpostexecute日志中: 我是新来的google地方api,请帮我找到什么是错误的。