Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpResponse和BufferedReader_Java_Android_Httpresponse_Bufferedreader_Http Get - Fatal编程技术网

Java HttpResponse和BufferedReader

Java HttpResponse和BufferedReader,java,android,httpresponse,bufferedreader,http-get,Java,Android,Httpresponse,Bufferedreader,Http Get,我正在尝试读取缓冲区(android应用程序)并将值设置为我的TextView'httpStuff'。但是我不认为我从URI那里得到了一些回应 我没有得到任何运行时错误。我尝试了许多相同逻辑的味道。似乎什么都没用 INTERNET权限已在清单中设置SdkVersion=“15”。有什么帮助吗 HttpClient client = new DefaultHttpClient(); URI website = new URI("http://www.mybringback.com"); HttpG

我正在尝试读取缓冲区(android应用程序)并将值设置为我的
TextView
'httpStuff'
。但是我不认为我从URI那里得到了一些回应

我没有得到任何运行时错误。我尝试了许多相同逻辑的味道。似乎什么都没用

INTERNET
权限已在清单中设置<代码>SdkVersion=“15”。有什么帮助吗

HttpClient client = new DefaultHttpClient();
URI website = new URI("http://www.mybringback.com");
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); 
BufferedReader in = new BufferedReader(new InputStreamReader(is));

httpStuf.setText( in.readLine());

尝试获取
响应的状态代码
,然后可以与()


int responseCode=response.getStatusLine().getStatusCode()
我认为您缺少while循环,而且,当您在.readLine()中只说
时,可能是它从响应返回了一个空行,尽管它有足够的数据。因此,请确保完全像这样阅读读取器并检查其内容

while ((line = rd.readLine()) != null) {
    httpStuf.setText(line+"\r\n");
}

希望这能对您有所帮助。

这段代码对我很有用

  InputStream is = response.getEntity().getContent();
  String strResponse = inputStreamToString(is);


private String inputStreamToString(InputStream is)
{

    String line = "";
    StringBuilder total = new StringBuilder();
    // Wrap a BufferedReader around the InputStream
    BufferedReader rd = new BufferedReader(new InputStreamReader(is), 1024 * 4);
    // Read response until the end
    try
    {

        while ((line = rd.readLine()) != null)
        {
            total.append(line);
        }
    } catch (IOException e)
    {
        Log.e(TAG, "error build string" + e.getMessage());
    }
    // Return full string
    return total.toString();
}

我使用这个方法只是捕获HTTP响应,它对我来说很好

public String httpGetResponse(String url) {
        try {
            Log.i("HTTP Request", "httpGet Request for : " + url);
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet get = new HttpGet(url);
            //get.setHeader("Connection", "keep-alive");

            HttpResponse response = client.execute(get);

            InputStream is = response.getEntity().getContent();
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(is));
            StringBuilder str = new StringBuilder();

            String line = null;

            while ((line = bufferedReader.readLine()) != null) {
                str.append(line + "\n");
            }
            return str.toString();
        } catch (Exception e) {
            Log.e("HTTP error", "Error in function httpGetResponse : "
                    + e.getMessage());
            return null;
        }
    }

我在Oncreate()中添加了下面的代码,它成功了!由于API级别为11,不允许在UI线程上执行网络操作(包括HttpClient和HttpUrlConnection)。如果执行此操作,将获得NetworkOnMainThreadException。StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(策略);我在Oncreate()中添加了下面的代码,它成功了!由于API级别为11,不允许在UI线程上执行网络操作(包括HttpClient和HttpUrlConnection)。如果执行此操作,将获得NetworkOnMainThreadException。StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(策略);我在Oncreate()中添加了下面的代码,它成功了!由于API级别为11,不允许在UI线程上执行网络操作(包括HttpClient和HttpUrlConnection)。如果执行此操作,将获得NetworkOnMainThreadException。StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();StrictMode.setThreadPolicy(策略);您可以使用AsyncTask来修复此问题。以下是一个例子: