Android JSon Object Не читается в веб-сервисе dotnet для операции вставки в REST - PullRequest
0 голосов
/ 22 октября 2010

Объект Json возвращается в веб-сервис, который получает i / p как

[OperationContract(Name = "Create")]
[WebInvoke(UriTemplate = "/Create/Data", Method = "POST",
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat=WebMessageFormat.Json)]

bool CreateCustomer(StringBuilder objCustomer);

// в моем сервисном файле я десериализирую объект i / p obj для моего объекта класса и вставляю

public bool Create(StringBuilder strObj)
    {
        JavaScriptSerializer js = new JavaScriptSerializer();

        Customer custObj = js.Deserialize<Customer>(strObj.ToString());

        bool Inserted = false;

// соединение установлено и в него помещены данные

из клиента im asp.net объект сериализуется в формат json, и его можно вставить в мою БД, но из Android объект JSON, который они отправляют, не может быть распознан моим сервисом ... но ответ на них идет как "ОК 200" ..

код андроида

HttpClient client = new DefaultHttpClient(); 
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit 

HttpResponse response; 
JSONObject json = new JSONObject();
String URL ="http://10.242.48.54/restinsert/Service1.svc/Create/Data";
try{ 

    HttpPost post = new HttpPost(URL); 
    json.put("CNo",200);
    json.put("CName","addme");

    StringEntity se = new StringEntity(json.toString());
    se.setContentType("application/json; charset=utf-8");
    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"));

    post.setHeader("Accept","application/json");
    post.setHeader("Content-type","application/json; charset=utf-8");
    String ss= post.toString();

    response = client.execute(post);

создал новый класс для сериализации и десериализации

public class Json
{
    public string JsontoString(string obj)
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        StringBuilder sb = new StringBuilder();
        js.Serialize(obj, sb);
        return sb.ToString();
    }

    public string StringtoJson(string obj)
    {

        JavaScriptSerializer js = new JavaScriptSerializer();
        Customer custObj = js.Deserialize<Customer>(obj.ToString());
        return custObj.ToString();
    }
}

}

Ответы [ 2 ]

1 голос
/ 15 декабря 2010
StringEntity se = new StringEntity(json.toString(), "utf-8");
0 голосов
/ 22 октября 2010

Никогда не используя Json Serializer, но имея небольшое представление о том, как WCF выполняет его десериализацию, я бы сказал, что в качестве параметра нельзя использовать StringBuilder.

Просто измените свою подпись операции на:

bool CreateCustomer(Customer customer);

WCF хочет выполнить сериализацию и десериализацию самостоятельно, так что позвольте ей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...