2012-02-28 102 views
0

我想從Android應用程序將數據發送到服務器(.NET),但它不工作,這是我的代碼:如何將數據從我的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 2012-02-28 09:20:43

+0

參數是否正確,狀態碼的含義。 – 2012-02-28 09:28:12

+0

try postMethod.getParams()。setParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,Boolean.TRUE); – 2012-02-28 09:37:46

回答

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

仍然我得到相同的錯誤。 – 2012-02-28 10:04:42

+0

如果使用代碼setHeaders我得到錯誤請求,錯誤的請求 - 無效的標題, 02-28 15:43:44.007:I/System.out(1580):


HTTP錯誤400.請求的標頭名稱無效。

從代碼400的響應。 – 2012-02-28 10:15:49

+0

只是禁用此行'request.setHeader(「Accept」,「application/json; charset = utf-8」);'看看它說什麼? – waqaslam 2012-02-28 11:31:40

0

您必須使用WSDL Web服務在.NET Web服務器上發佈數據,因爲.NET框架不提供WSDL連接,並且不支持像Java這樣的直接HttpPost(myURL)

我希望this article會幫助你。

+0

你能給我任何教程。爲此 – 2012-02-28 09:32:43

0

如果你正在尋找一個教程中,Android SDK附帶一個名爲維基詞典一個示例應用程序。這是理解HTTP獲取JSON的好例子。

+0

在上面的教程有如何得到,我的要求如何發佈到服務器。 – 2012-02-29 04:34:52

相關問題