2012-02-28 106 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

相关问题