Creating an ASP.net WebService that returns JSON instead of XML

thehacker010

New Member
Maybe the method is returning how it should, but I basically just made a test method that looks like this\[code\] [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); }\[/code\]When i hit this from my android application I get an exception like this\[code\]Value <?xml of type java.lang.String cannot be converted to JSONArray\[/code\]I thought this method would return just straight JSON, but this is what the web service method returns\[code\]<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">[{"Latitute":"19","Longitude":"27"},{"Latitute":"-81.9","Longitude":"28"}]</string>\[/code\]Is it suppose to be like this? Is there a way to remove the XML stuff that is outside the JSON? I'm not sure what I have to do in my webservice to make it return the correct format of dataCode Using on Android to Call the Webservice\[code\] 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"; }\[/code\]then I would call that method somewhere in the code like\[code\]try { JSONArray jsonArray = new JSONArray(readWebService("TestJSON")); Log.i(main.class.toString(), "Number of entries " + jsonArray.length()); ....}...\[/code\]
 
Back
Top