2012-07-09 70 views
0

我正在嘗試聯繫API並獲取響應。作爲我的調試的一部分,我想確保響應被記錄,它應該是一個XML響應。使用Android向API發送信息

這是我有:

公共類HTTP擴展活動{

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 

響應不是真正的httpresponse類型的變量嗎?這裏發生了什麼...?

回答

4

響應變量的作用域僅在try塊內。兩種方式解決此問題:

1)把這些語句之後HttpResponse response = httpclient.execute(httppost);

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

2)定義HttpResponse反應出方的嘗試。

編輯:由於WindyB指定當你在嘗試塊外定義時,確保null檢查以避免NullPointerException

閱讀本link

+0

或者,澄清甚至更多:你應該申報「的HttpResponse響應」你try塊之外。請確保在您的catch語句或您的應用程序偶爾會發生NullPointerException異常後執行空檢查。 – WindyB 2012-07-09 18:15:16

+0

您已回答我的官方問題並修復了我的錯誤。我無法相信自己錯過了...但是我希望你能爲我解答這個問題......沒有什麼會被展示出來。它進入下一個屏幕,但沒有給出響應。我沒有正確使用這些功能嗎? (我允許在清單中訪問互聯網) – GK1667 2012-07-09 18:30:38

+0

,也許它與修正錯誤有關。它讓我把它投射到CharSeq進行編譯。所以它看起來像myTextView.setText((CharSeq)響應); – GK1667 2012-07-09 18:34:08