首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当安卓通过WiFly与Arduino通信时,HTTP失败

当安卓通过WiFly与Arduino通信时,HTTP失败
EN

Stack Overflow用户
提问于 2012-12-08 15:37:58
回答 1查看 315关注 0票数 0

我正在尝试使用HTTP向我的Arduino设备传递命令。设备接收到命令,并按预期执行。但是正如我在下面提到的那样,我在HttpClient.execute()中得到了一个错误。如何更正代码?

代码语言:javascript
运行
复制
protected String doInBackground(Void... params) {
    try {
        Log.i("CallArduino ","In doInBackground");
        final int TIMEOUT_MILLISEC = 1000;
        HttpParams httpParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
        HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
        HttpClient client = new DefaultHttpClient(httpParams);
        //    URL="http://www.google.co.in";
        HttpGet get = new HttpGet(URL);

        Log.i("CallArduino ","before get");
                        responseGet = client.execute(get);
        Log.i("CallArduino ","after get");
        resEntityGet = responseGet.getEntity();

        Log.i("CallArduino ","in PostExecute");
        if (resEntityGet != null) {
            InputStream is = resEntityGet.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);

            StringBuilder sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");
            String line="0";
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result=sb.toString();
        }
    }
    catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally{

    }

输出:

代码语言:javascript
运行
复制
 12-08 12:58:10.419: I/CallArduino(5652): before get
 12-08 12:58:11.589: W/System.err(5652): java.net.SocketTimeoutException
 12-08 12:58:11.589: W/System.err(5652): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491)
 12-08 12:58:11.589: W/System.err(5652): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
 12-08 12:58:11.589: W/System.err(5652): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.io.AbstractMessageParser.parseHeaders(AbstractMessageParser.java:122)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:178)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
 12-08 12:58:11.599: W/System.err(5652): at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:512)
 12-08 12:58:11.609: W/System.err(5652): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:490)
 12-08 12:58:11.609: W/System.err(5652): at com.example.homeautomation.CallArduino$httpTask.doInBackground(CallArduino.java:87)
 12-08 12:58:11.609: W/System.err(5652): at com.example.homeautomation.CallArduino$httpTask.doInBackground(CallArduino.java:1)
 12-08 12:58:11.609: W/System.err(5652): at android.os.AsyncTask$2.call(AsyncTask.java:264)
 12-08 12:58:11.609: W/System.err(5652): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
 12-08 12:58:11.609: W/System.err(5652): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
 12-08 12:58:11.609: W/System.err(5652): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
 12-08 12:58:11.609: W/System.err(5652): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
 12-08 12:58:11.609: W/System.err(5652): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
 12-08 12:58:11.619: W/System.err(5652): at java.lang.Thread.run(Thread.java:856)
 12-08 12:58:11.619: I/CallArduino(5652): result  :null
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-17 17:12:06

可能是您的Internet连接速度较慢。您可以使用以下方法来增加您的超时间隔。

HttpConnectionParams.setSoTimeout(params, 1000);

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

https://stackoverflow.com/questions/13775559

复制
相关文章

相似问题

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