0

ここでは、応答に問題がある doinBackground() を配置しています。

@Override
protected string doInBackground(string... params) {
            // TODO Auto-generated method stub
            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(
                        "http://motinfo.direct.gov.uk/internet/jsp/ECHID-Internet-History-Request.jsp");
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                        3);
                nameValuePairs.add(new BasicNameValuePair(
                        "Vehicle registration mark from number plate",
                        "123456789"));
                nameValuePairs.add(new BasicNameValuePair("MOT test number",
                        "AP3398"));
                nameValuePairs.add(new BasicNameValuePair("MOT test number",
                        "000000"));

                post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                HttpResponse response = client.execute(post);

                /*String line = "";
                if (response != null) {
                    System.out
                    .println("***********************************************************");
                    xx.setText(EntityUtils.toString(response.getEntity()));

                }else {

                }*/

            } catch (IOException e) {
                e.printStackTrace();
            }
            return response;

        }
4

6 に答える 6

1

1.あなたは Return タイプStringを持っていて、あなたはreturning response ( HttpResponse )

2.ブロックのHttpResponse response;前に宣言するTry{...

3.に変更 response = client.execute(post);

return EntityUtils.toString(response.getEntity())

4.チェックprotected string doInBackgroun... string? する必要がありますString

5.U I part in を更新することはできませんdoInBackgroundonPostExecute()

したがって、コメントを外すと、次が生成されますException

xx.setText(EntityUtils.toString(response.getEntity()));
于 2013-09-11T08:14:38.850 に答える
0

次のそれをより論理的に使用してみてください。

return response.getStatusLine().getStatusCode()+""
于 2013-10-23T10:50:00.023 に答える
0

問題:

  1. 戻り値の型は String で、HttpResponse を返そうとしています。
  2. 応答の範囲は、そのブロックで宣言しているため、try-catch ブロックのみに限定されます。

解決:

レスポンスを文字列に変換して返します。

試す

@Override
protected string doInBackground(string... params) {
            // TODO Auto-generated method stub
            HttpResponse response = null;
            InputStream is = null;
            BufferedReader reader = null;
            StringBuilder sb = null;

            try {
                HttpClient client = new DefaultHttpClient();
                HttpPost post = new HttpPost(
                        "http://motinfo.direct.gov.uk/internet/jsp/ECHID-Internet-History-Request.jsp");
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                        3);
                nameValuePairs.add(new BasicNameValuePair(
                        "Vehicle registration mark from number plate",
                        "123456789"));
                nameValuePairs.add(new BasicNameValuePair("MOT test number",
                        "AP3398"));
                nameValuePairs.add(new BasicNameValuePair("MOT test number",
                        "000000"));

                post.setEntity(new UrlEncodedFormEntity(nameValuePairs));


                try {
            // executes the request and gets the response.
            response = client.execute(post);
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        httpEntity = response.getEntity();
        is = httpEntity.getContent();

        // convert response to string
        reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
        sb = new StringBuilder();
        sb.append(reader.readLine() + "\n");

        String line = "0";

        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();

        return sb.toString();                 

        } 

そして、次のように更新しますpostExecute(String result)

// コードの行。

xx.setText(result);
于 2013-09-11T08:25:50.110 に答える
0

この行はバックグラウンド スレッドに書き込むことはできません

xx.setText(EntityUtils.toString(response.getEntity()));

非UIスレッドからUIを更新できないためです。

この行を onPostExecute() メソッドに記述します。

于 2013-09-11T08:06:13.157 に答える