从android调用web服务api但参数缺失错误

时间:2017-03-12 10:52:03

标签: c# android asp.net

我正在尝试从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的参数而不使用名称 - 值对。

第一个场景中的问题是什么?突然改变的原因是什么? 请帮忙。

1 个答案:

答案 0 :(得分:1)

在第一个方案中,您没有在任何地方使用nameValuePair

添加此位:

在致电post.setEntity(new UrlEncodedFormEntity(nameValuePair));

之前

httpClient.execute(post);