Androidフォンに保存されているユーザーからの情報をWCFサービスに保存しようとしています。電話から 400 エラーが発生し、fiddler を使用して同じ要求をサーバーに送信しようとすると (localhost でテストする場合)、ビジュアル スタジオが save メソッドに null ポインターをポップアップします。私はティーにこの例に従っていますが、うまくいきません:チュートリアル
ここに私のコードの一部があります: 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);
^ ユーザーが null であるため、このメソッドは null ポインターをスローしています。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 をローカルホストに送信するフィドラーは次のとおり です。コンテンツの長さを追加した画像を次に 示しますが、画像では 0 と表示されています。実際には 86 です。