我试图做一个简单的登录功能。 登录将由应用程序进行,信息将发送到WebService(在C#中)。
我的应用程序通过HttpPost将信息发送到服务器。但我无法在Web服务端获取并返回此信息
要发出请求(android方面),我正在使用:
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", user.getText().toString()));
params.add(new BasicNameValuePair("password", pass.getText().toString()));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
在WebService方面,我尝试使用序列化方法,但它不起作用
Ps。:为了测试,我试图在另一个WebService(这是用PHP构建的)上运行,并且工作正常。
任何想法如何使这项工作?
[编辑]
这是网络服务方面:
[HttpPost]
public string LogarAplicativo()
{
//Request.InputStream.Seek(0, SeekOrigin.Begin);
string jsonData = new StreamReader(Request.InputStream).ReadToEnd();
dynamic data = JObject.Parse(jsonData);
//DB validation's
var json = "";
var serializer = new JavaScriptSerializer();
json = serializer.Serialize(new { success = "0", message = "Test message!" });
return json;
}
答案 0 :(得分:1)
当您使用UrlEncodedFormEntity
发送信息时,它看起来像the contents of an HTTP form:
param1=value1¶m2=value2
这不是JSON数据,因此您的序列化代码不起作用,因为它是一个完全不同的结构。解析表单数据需要使用不同的方法,如HttpUtility.ParseQueryString
。