【发布时间】:2014-04-17 02:38:11
【问题描述】:
我正在尝试从 Angular 发布到 WCF json 服务端点,但我的尝试没有成功。我已验证该服务正在通过其他方式运行并适用于指定的 URL。
使用萤火虫我可以看到输出的请求是这样的:
NetworkError: 400 错误请求 - http://www.myapi.com/V1/Service.svc/Authenticate?Password=password&UserName=username"
角码
app.service('UserService', function ($http) {
this.GetLoginStatus = function (AuthenticateRequest) {
$http({
url: APIURL + "/Authenticate",
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
params: AuthenticateRequest,
data: {
'Code': 'test data'
}
});
};
});
WCF 服务
[WebInvoke(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped)]
[OperationContract]
AuthenticateResponse Authenticate(AuthenticateRequest Request);
请求定义
[DataContract]
public class AuthenticateRequest
{
[DataMember]
public String UserName { get; set; }
[DataMember]
public String Password { get; set; }
}
【问题讨论】:
-
您在哪里设置/定义服务的基本身份验证?您确定身份验证字符串是好的吗?你在 chrome 中使用邮递员吗?
-
我更新了我的代码并删除了该行。我确实使用过邮递员。
-
我对 WCF 不是很熟悉,但是添加 XML 元素的不是 Wrapped() 样式吗?如果目的是让 api 只说 json,也许你不想要那个?另外,我不禁认为您可能希望将内容发送到正文、数据属性中,而不是作为查询参数(因为服务需要 POST)。
标签: javascript json web-services wcf angularjs