我试图从Android应用程序发送数据到wcf服务,但得到错误400.请帮助我

时间:2013-11-26 18:03:08

标签: c# android wcf

我正在创建一个将由android应用程序使用的wcf服务。

我已经声明了一个界面:

[OperationContract]
    [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "RegsiterUser")]
    string RegsiterUser(RegsiterUser rUser);

在服务代码中:

public string RegsiterUser(RegsiterUser rUser)
{
    return rUser.userName;
}

我创建了一个类:

[DataContract]
public class RegsiterUser
{

    #region Property

    [DataMember]
    public string userName { get; set; }
    [DataMember]
    public string Password { get; set; }
    #endregion
}

当调用此服务时,它会给出错误的请求错误:400

我也使用chrome的postmaster应用程序对它进行了测试,同样即将到来,所以如果有任何机构有解决方案,请帮助我。 感谢。

1 个答案:

答案 0 :(得分:1)

<强>接口

由于您正在使用带参数的GET-Method,您需要在UriTemplate中声明该参数: 具有请求主体的Get-methods在技术上可以工作,但不建议: 有关此主题的更多信息,请参阅此帖子:HTTP GET with request body

因此,您可以将方法更改为POST,并提交JSON,或使用GET和参数。

这将是参数版本的示例:

    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "getuserdata/{userName}")]
     string RegsiterUser(string userName);

如果你想要POST,只需将方法改为POST,其余的就可以了。

<强>模型

我建议指定属性的名称,喜欢这样:通过这种方式,您可以更好地控制JSON,并清楚如何命名属性。

    [DataMember(Name = "userName")]
    public string UserName { get; set; }
相关问题