我正在尝试从Android应用程序调用web服务api,代码如下所示:
ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);
nameValuePair.add(new BasicNameValuePair("check", "chk"));
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(HTTP_CHECK);
post.setEntity(new UrlEncodedFormEntity(nameValuePair));
httpClient.execute(post);
HttpResponse httpres = httpClient.execute(post);
这是我在asp.net上的Web服务API
[WebMethod]
public string HelloWorld2(String check)
{
return "SuccessCheck";
}
主机服务器是Godaddy。 上述方法以前有效。但现在它在应用程序上给出了错误 -
System.InvalidOperationException:缺少参数:check。
如何说缺少参数。该参数作为namevaluepair传递。我不知道是什么问题?但是,它在localhost上完美运行。
没有任何参数的服务方法在服务器和本地主机上都能正常工作。 现在当我更改Android代码时如下
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(HTTP_CHECK + "?check=chk");
httpClient.execute(post);
HttpResponse httpres = httpClient.execute(post);
现在它在服务器和主机上运行良好。因为我正在传递带有上面给出的URL的参数而不使用名称 - 值对。
第一个场景中的问题是什么?突然改变的原因是什么? 请帮忙。
答案 0 :(得分:1)
在第一个方案中,您没有在任何地方使用nameValuePair
。
添加此位:
在致电post.setEntity(new UrlEncodedFormEntity(nameValuePair));
之前 httpClient.execute(post);