Создание веб-службы ASP.net, которая возвращает JSON вместо XML

Возможно, метод возвращает то, что должен, но я просто сделал тестовый метод, который выглядит так

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string TestJSON()
    {
        var location = new Location[2];
        location[0] = new Location();
        location[0].Latitute = "19";
        location[0].Longitude = "27";
        location[1] = new Location();
        location[1].Latitute = "-81.9";
        location[1].Longitude = "28";

        return new JavaScriptSerializer().Serialize(location);
    }

Когда я нажимаю это из своего приложения для Android, я получаю такое исключение

Value <?xml of type java.lang.String cannot be converted to JSONArray

Я думал, что этот метод будет возвращать только JSON, но это то, что возвращает метод веб-сервиса

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{"Latitute":"19","Longitude":"27"},{"Latitute":"-81.9","Longitude":"28"}]</string>

Предполагается, что это так? Есть ли способ удалить материал XML, который находится за пределами JSON? Я не уверен, что мне нужно сделать в моем веб-сервисе, чтобы он возвращал правильный формат данных

Использование кода на Android для вызова веб-сервиса

   public String readWebService(String method)
{
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://myserver.com/WebService.asmx/" + method);


    Log.d(main.class.toString(), "Created HttpGet Request object");

    try
    {
        HttpResponse response = client.execute(httpGet);
        Log.d(main.class.toString(), "Created HTTPResponse object");
        StatusLine statusLine = response.getStatusLine();
        Log.d(main.class.toString(), "Got Status Line");
        int statusCode = statusLine.getStatusCode();
        if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
                builder.append(line);
            }

            return builder.toString();
        } else {
            Log.e(main.class.toString(), "Failed to contact Web Service: Status Code: " + statusCode);
        }
    }
    catch (ClientProtocolException e) {
        Log.e(main.class.toString(), "ClientProtocolException hit");
        e.printStackTrace();
    }
    catch (IOException e) {
        Log.e(main.class.toString(), "IOException hit");
        e.printStackTrace();
    }
    catch (Exception e) {
        Log.e(main.class.toString(), "General Exception hit");
    }

    return "WebService call failed";    
}

то я бы вызвал этот метод где-нибудь в коде, например

try {
    JSONArray jsonArray = new JSONArray(readWebService("TestJSON"));
    Log.i(main.class.toString(), "Number of entries " + jsonArray.length());
       ....
}
...
6
задан Kyle Gobel 1 July 2012 в 18:50
поделиться