Android 휴대 전화에 저장된 정보를 WCF 서비스에 저장하려고합니다. 전화에서 400 오류가 발생하고 내 localhost에서 테스트 할 때 피들러를 사용하여 서버에 동일한 요청을 보내려고하면 내 Visual Studio가 내 저장 메서드에서 null 포인터를 팝업합니다. 나는 티로이 예제를 다음과 단지 작동하지 해요 : Tutorial 여기JSON 400 잘못된 요청과 널 포인터를 사용하여 Android to WCF
내 코드의 일부 : 다음은 WCF 서비스에서 내 사용자 개체의 내 IService
에서[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; }
}
운영 계약
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml,
RequestFormat= WebMessageFormat.Json,
UriTemplate = "saveUser")]
Boolean saveUser(User user);
^사용자가 null이기 때문에이 메소드는 널 포인터를 던지고 있습니다. WebMessageBodyStyle을 WrappedRequest로 변경하려고 시도했지만 도움이되지 않습니다.
을 heres POST 요청을 보낼 수있는 안드로이드 코드 :
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을 보내는 피들러입니다 : Here's the picture 내가 내용 길이를 추가했지만 사진에 그것이 정말 어떤 도움이 극명하게 될 것이다 86은 0을 말한다.
대신 'JSONObject'와'JSONObject.toString()'을 사용하는 것이 좋습니다. 더 명확하고 유용합니다. –
Fiddler를 사용하여 요청을 검사하려고 시도 했습니까? – Rajesh
피들을 사용하여 하단에 그림을 추가했습니다 – slai47