首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Volley EOFException

Android Volley EOFException
EN

Stack Overflow用户
提问于 2016-05-17 12:46:53
回答 2查看 2.4K关注 0票数 1

我有一个简单的应用程序,它使用这样的截击:

代码语言:javascript
复制
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                        Log.d("VolleyController", "Received volley response: " + response);
                        callback.onCallback(OperationOutcome.SUCCESS, response);
                    }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // This is null.
            NetworkResponse response = error.networkResponse;
            Log.e("VolleyManager", "Received error response from volley: ", error );
            callback.onCallback(OperationOutcome.FAILURE, null);
        }
    });

    // Add the request to the RequestQueue.
    queue.add(stringRequest);

这是我得到的例外:

代码语言:javascript
复制
   Received error response from volley:   com.android.volley.NoConnectionError: java.io.EOFException
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
     Caused by: java.io.EOFException
        at com.android.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:98)
        at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:202)
        at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:119)
        at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:798)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:405)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:349)
        at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:517)
        at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:110)
        at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
        at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 

我在网上找到了一些关于这件事的其他答案,但他们没有解决。请求没有到达服务器。

非常感谢。

编辑

我对这份舱单都有许可:

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET" />

互联网在这个设备上运行得很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-20 18:43:17

这个问题是因为我发出的请求是空的。我认为Volley本身会将其转换为正确的JSON表示形式({})。相反,我认为请求只是一个null,这导致了异常。为了解决这个问题,我在一个StringRequest中修改了JSONObjectRequest。它有一个构造函数,它以如下所示的JSONObject作为输入:

代码语言:javascript
复制
// This will instantiate an empty JSON request with the correct format.
new JSONObject("{}");

我仍然不明白为什么抽射不自己做,我想理解只是出于好奇。无论如何,在这之后,我决定切换到Retrofit,这是更多的表现力和更简单的设置。

谢谢大家的帮助!

票数 0
EN

Stack Overflow用户

发布于 2016-05-17 12:50:33

您的设备上启用了互联网吗?你在你的舱单上设置了互联网许可吗?

编辑:

检查您的URL是否正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37276669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档