0

API に接続して応答を得ようとしています。デバッグの一環として、応答が記録されていることを確認したいのですが、それは xml 応答である必要があります。

ここに私が持っているものがあります:

public class http extends Activity {

public void httpMethod(){
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://site.com/api/");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("apikey", "0d4e122d20"));

        nameValuePairs.add(new BasicNameValuePair("ip", "65.82.126.103"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }

   TextView myTextView = (TextView) findViewById(R.id.myTextView);
   myTextView.setText(response);
}
}

取得した応答を確認しようとしていますが、行の可変応答

myTextView.setText(response)

エラーをスローしています:

response cannot be resolved to a variable

response は本当に httpresponse 型の変数ではありませんか? 何が起きてる...?

4

1 に答える 1

4

応答変数のスコープは、try ブロック内のみです。これを解決するには、次の 2 つの方法があります。

1)これらのステートメントを直後に移動します HttpResponse response = httpclient.execute(httppost);

 TextView myTextView = (TextView) findViewById(R.id.myTextView);
   myTextView.setText(response);

HttpResponse2) try の外側で応答を定義します。

編集: try ブロックの外側で定義するときに WindyB が指定されているので、必ずnullチェックを入れて回避してくださいNullPointerException

このリンクを読む

于 2012-07-09T18:13:00.150 に答える