C#从Android读取信息

时间:2015-07-29 19:54:13

标签: c# android json web-services

我试图做一个简单的登录功能。 登录将由应用程序进行,信息将发送到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;
}

1 个答案:

答案 0 :(得分:1)

当您使用UrlEncodedFormEntity发送信息时,它看起来像the contents of an HTTP form

param1=value1&param2=value2

这不是JSON数据,因此您的序列化代码不起作用,因为它是一个完全不同的结构。解析表单数据需要使用不同的方法,如HttpUtility.ParseQueryString