2011-01-20 18 views
0

私は、HTTP POSTメソッド使用していくつかのデータを送信するために、AndroidのAPIを使用していました: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を使用して同じパラメータで同じリクエストをテストしたところ、期待される応答が得られました。

私のコードは間違っていますか?

は、私は2番目のパラメータとしてエンコーディングを取るUrlEncodedFormEntityコンストラクタを検討したい非常に

+0

**可能な複製**:ここ

は、HTTP POST(およびカスタムヘッダー)を使用するサンプルアプリケーションの関連部分はidenti.caにユーザーのステータスを更新することです// stackoverflow.com/questions/4470936/how-to-do-a-http-post-in-android/4472300#4472300 –

+0

あなたはインターネット許可を宣言しますか? – qrtt1

答えて

2

、ありがとうございました。それ以外の場合は、袖口から外しても問題ありません。あなたは、これらの要求に対して受信しているものをサーバログでチェックするかもしれません。また、エミュレータを使用している場合、エミュレータがインターネットに接続できることを確認することもできます(信号強度の2つのバーがあります)。 HTTPの

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); 
    } 
} 
関連する問題