2011-01-20 57 views
0

我使用的Android API,使用HTTP POST方法來發送一些數據:如何在Android中發佈?

 HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://myapp.com/"); 

     try { 
      List parameters = prepareHttpParameters(); 
      HttpEntity entity = new UrlEncodedFormEntity(parameters); 
      httppost.setEntity(entity); 

      ResponseHandler responseHandler = new BasicResponseHandler(); 
      response = httpclient.execute(httppost, responseHandler); 

      Toast.makeText(this, response, Toast.LENGTH_LONG).show(); 
     } catch (IOException e) { 
      // TODO: manage ClientProtocolException and IOException 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 

,並在這裏準備我的參數:

List parameters = new ArrayList(2); 
parameters.add(new BasicNameValuePair("usr", "foo")); 
parameters.add(new BasicNameValuePair("pwd", "bar")); 
return parameters; 

但它似乎是錯誤的,因爲我沒有得到任何預期的迴應。

我已經用相同的參數使用Curl測試了相同的請求,並且我得到了預期的響應。

我的代碼錯了嗎?

非常感謝您

+0

**可能的複製**爲http:// stackoverflow.com/questions/4470936/how-to-do-a-http-post-in-android/4472300#4472300 – 2011-01-20 09:14:26

回答

2

我會考慮的UrlEncodedFormEntity構造函數的編碼作爲第二個參數。否則,關閉袖口,這看起來不錯。你可能會檢查你的服務器日誌你收到這些請求。如果您正在使用模擬器,則可能還要確保仿真器具有Internet連接(即,具有兩個信號強度條)。

下面是一個使用HTTP POST(和自定義首部)的樣品應用程序的相關部分到上identi.ca更新用戶的狀態:

private String getCredentials() { 
    String u=user.getText().toString(); 
    String p=password.getText().toString(); 

    return(Base64.encodeBytes((u+":"+p).getBytes())); 
} 

private void updateStatus() { 
    try { 
     String s=status.getText().toString(); 

     HttpPost post=new HttpPost("https://identi.ca/api/statuses/update.json"); 

     post.addHeader("Authorization", 
            "Basic "+getCredentials()); 

     List<NameValuePair> form=new ArrayList<NameValuePair>(); 

     form.add(new BasicNameValuePair("status", s)); 

     post.setEntity(new UrlEncodedFormEntity(form, HTTP.UTF_8)); 

     ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
     String responseBody=client.execute(post, responseHandler); 
     JSONObject response=new JSONObject(responseBody); 
    } 
    catch (Throwable t) { 
     Log.e("Patchy", "Exception in updateStatus()", t); 
     goBlooey(t); 
    } 
} 
相關問題