我正在尝试将保存在 android 手机上的用户的一些信息保存到 WCF 服务。我从手机收到 400 错误,当我尝试使用 fiddler 向服务器发送相同的请求时(在我的本地主机上测试时),我的 Visual Studio 在我的保存方法中弹出一个空指针。我正在按照这个例子来发球,它只是不工作:教程
这是我的一些代码:这是我在 WCF 服务中的用户对象:
[DataContract]
public class User
{
[DataMember(Name= "userid")]
public int UserId { get; set; }
[DataMember(Name = "username")]
public string username { get; set; }
[DataMember(Name = "password")]
public string password { get; set; }
[DataMember(Name = "information")]
public Byte[] information { get; set; }
}
我的 IService 中的操作合同
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
RequestFormat= WebMessageFormat.Json,
UriTemplate = "saveUser")]
Boolean saveUser(User user);
^ 此方法抛出空指针,因为用户为空。我尝试将 WebMessageBodyStyle 更改为 WrappedRequest 但这没有帮助。
下面是发送 POST 请求的 android 代码:
JSONStringer user = new JSONStringer()
.object()
.key("user").object()
.key("userid").value("1").key("username").value(appState.getCurrentUser().username)
.key("password").value(appState.getCurrentUser().password)
.key("information").value(str.toString())
.endObject()
.endObject();
StringEntity entity = new StringEntity(user.toString());
HttpPost request = new HttpPost(new URI(url));
request.setHeader(HTTP.CONTENT_TYPE, "application/json");
request.setHeader("Accept", "application/json");
request.setEntity(entity);
HttpResponse response = httpClient.execute(request);
^ 响应是来自服务器的 400 错误。
这是将 json 发送到 localhost 的提琴手: 这是 我添加内容长度的图片,但在图片中显示为 0。它确实是 86。任何帮助将不胜感激。