2012-02-28 28 views
0

iは、サーバ(.NET)するには、Androidアプリケーションからデータを送信したいが、それは、これは私のコードでは動作しません:私のAndroidアプリからサーバーにデータを投稿するには?

DefaultHttpClient hc=new DefaultHttpClient(); 
ResponseHandler <String> res=new BasicResponseHandler(); 
HttpPost postMethod=new HttpPost(myURl); 

postMethod.getParams().setParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, Boolean.FALSE); 
postMethod.getParams().setBooleanParameter("http.protocol.expect-continue", false); 
postMethod.setHeader("Content-Type", "application/json"); 

JSONObject json = new JSONObject(); 

json.put("TOKEN", channel_token).toString(); 
json.put("APPLICATIONDATASOURCEID", data_src_id).toString(); 
json.put("NEWSTITLE", Title_edittext.getText().toString().trim()).toString(); 
json.put("NEWSDETAILS", Details_edittext.getText().toString()).toString();  
json.put("ALERTSTARTSAT" , "12/03/2012/05/12"); 
json.put("ALERTENDSAT", "13/03/2012/06/12"); 
json.put("SENDPUSHNOTIFICATION", true); 
json.put("EXPIREIMMEDIATELY", true); 

Log.i("jason Object", json.toString()); 

StringEntity se = new StringEntity(json.toString()); 
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json")); 
postMethod.setEntity(se);  

HttpResponse response = hc.execute(postMethod); 
HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); 
String _response = convertStreamToString(is); 
System.out.println("res " + _response); 

サーバーからの応答としてこれを取得「Expectaions失敗」を。どこに問題があるのか​​教えてください。

+0

json文字列に正しいパラメータを渡していますか?あなたのStatusCodeは何ですか? – waqaslam

+0

のパラメータは正しいです、ステータスコードは意味します。 –

+0

postMethod.getParams()を試してください。setParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE、Boolean.TRUE); –

答えて

1

は、以下のようにあなたのJSONリクエストを設定:チュートリアルを探している場合

final int TIMEOUT_MILLISEC = 10000; // = 10 seconds 

HttpParams httpParams = new BasicHttpParams(); 
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC); 
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC); 
HttpClient client = new DefaultHttpClient(httpParams); 

HttpPost request = new HttpPost(myURl); 

//set post request type 
request.setHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 

//request result type 
request.setHeader("Accept", "application/json; charset=utf-8"); 

JSONObject json = new JSONObject(); 
. 
. 
. 
. 
. 
//and so on with rest of the code 
+0

まだ同じエラーが発生しています。あなたのコードはsetHeadersを使用 –

+0

場合、私は、不正な要求を取得しています。を、不正な要求 - 無効なヘッダー、 02-28 15:43:44.007:I/System.out(1580):


HTTPエラー400。要求のヘッダー名が無効です。

コード400での返信.. –

+0

この行 'request.setHeader(" Accept "、" application/json; charset = utf-8 "); – waqaslam

0

.NETフレームワークはWSDL接続を提供せず、Javaのように直接HttpPost(myURL)をサポートしないため、WSDL Webサービスを使用して.NET Webサーバーにデータをポストする必要があります。

this articleがお手伝いします。

+0

私にチュートリアルを教えてもらえますか?このため –

0

を、AndroidのSDKはウィクショナリーというサンプルアプリが付属しています。これは、HTTP Get JSONについて理解する良い例です。

+0

上記のチュートリアルで、私の要件を取得する方法を持っているサーバーに投稿する方法。 –

関連する問題