法不支持JSON解析错误。 [英] Method not supported error on parsing JSON.

查看:237
本文介绍了法不支持JSON解析错误。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我努力的JSON解析,但是当解析则给出错误
httppost方法不受此URL支持
我在这里放下我的code

<一个href=\"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json\" rel=\"nofollow\">http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json

  SearchListActivity.java 公共类SearchlistActivity延伸活动{    私人静态字符串url=\"http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json/\";私有静态最后弦乐TAG_RESULTS =成果;私有静态最后弦乐TAG_RESPONSEDATA =responseData;        @覆盖
    公共无效的onCreate(捆绑savedInstanceState)    {
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);
        Log.e(JSON ----,urlll ----&gt;中+网址);
        // JSONArray结果= NULL;
         JSONArray responseData = NULL;
     //为哈希映射的ListView
        ArrayList的&LT;&HashMap的LT;字符串,字符串&GT;&GT; contactList =新的ArrayList&LT;&HashMap的LT;字符串,字符串&GT;&GT;();        //创建JSON解析器实例
        JsonParserSearch jParser =新JsonParserSearch();        // URL从获取JSON字符串
        JSONObject的JSON = jParser.getJSONFromUrl(URL);        尝试{
            //获取联系人的数组             responseData = json.getJSONArray(TAG_RESPONSEDATA);
             Log.e(jsonnn数据,sfsssss00000 --------&gt;中+ responseData);            }
        赶上(JSONException E){
            e.printStackTrace();
        }    }}&GT;


  

Jsonparsersearch.java


  
  

    

公共类JsonParserSearch {静态InputStream为= NULL;
        静态的JSONObject jObj = NULL;
        静态JSON字符串=;


  

  //构造
公共JsonParserSearch(){}公众的JSONObject getJSONFromUrl(字符串URL){    //使HTTP请求
    尝试{
        // defaultHttpClient
        DefaultHttpClient的HttpClient =新DefaultHttpClient();
        HttpPost httpPost =新HttpPost(URL);        HTT presponse HTT presponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = HTT presponse.getEntity();
        是= httpEntity.getContent();    }赶上(UnsupportedEncodingException五){
        e.printStackTrace();
    }赶上(ClientProtocolException E){
        e.printStackTrace();
    }赶上(IOException异常五){
        e.printStackTrace();
    }    尝试{        读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
                是,ISO-8859-1),8);
        StringBuilder的SB =新的StringBuilder();
        串线= NULL;
        而((行= reader.readLine())!= NULL){
            sb.append(行+\\ n);
        }
        is.close();
        JSON = sb.toString();       Log.e(JSON对象的网址,显示+ JSON);
    }赶上(例外五){
        Log.e(缓冲区错误,错误转换结果+ e.toString());
    }    //尝试分析字符串到一个JSON对象
    尝试{
        jObj =新的JSONObject(JSON);
    }赶上(JSONException E){
        Log.e(JSON解析器finaal,错误分析数据+ e.toString());
    }    //返回JSON字符串
    返回jObj;}}


 &GT; &GT; &GT; logcat的错误
    &GT; &GT; &GT;
    &GT; &GT; &GT; 12月11日至九日:23:17.700:E / JSON ----(481): urlll---->http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json 12月11日至九日:23:18.260:E / JSON对象URL(481):显示&LT; HTML&GT; 11-09
    &GT; &GT; 12:23:18.260:E / JSON对象URL(481):其中; HEAD&GT; 11-09 12:23:18.260:
    &GT; &GT; E / JSON对象URL(481):其中,TITLE&GT; HTTP POST方法不支持
    &GT; &GT;这个网址与LT; / TITLE&GT; 12月11日至九日:23:18.260:E / JSON对象URL(481):其中; / HEAD&GT;
    &GT; &GT; 12月11日至九日:23:18.260:E / JSON对象URL(481):其中,BODY BGCOLOR =#FFFFFF
    &GT; &GT; TEXT =#000000&GT; 12月11日至九日:23:18.260:E / JSON对象URL(481):其中,H1&GT; HTTP
    &GT; &GT; POST方法不受此网址&LT的支持; / H1&GT; 11-09 12:23:18.260:
    &GT; &GT; E / JSON对象URL(481):其中,H2&GT;错误405 LT; / H2&GT; 12月11日至九日:23:18.260:E / JSON
    &GT; &GT;对象URL(481):其中; / BODY&GT; 12月11日至九日:23:18.260:E / JSON对象URL(481):
    &GT; &GT; &LT; / HTML&GT; 12月11日至九日:23:18.260:E / JSON解析器finaal(481):错误分析
    &GT; &GT;数据org.json.JSONException:值&LT; HTML&GT; java.lang.String类型
    &GT; &GT;不能被转换为JSONObject的12月11日至9日:23:18.270:
    &GT; &GT; D / AndroidRuntime(481):关闭VM 12月11日至9日:23:18.270:
    &GT; &GT; W / dalvikvm(481):主题ID = 1:螺纹未捕获的异常退出
    &GT; &GT; (组= 0x4001d800)12月11日至9日:23:18.290:E / AndroidRuntime(481):FATAL
    &GT; &GT;例外:主要的12月11日至9日:23:18.290:E / AndroidRuntime(481):
    &GT; &GT;了java.lang.RuntimeException:无法启动活动
    &GT; &GT; ComponentInfo {com.example.ssss / com.example.ssss.SearchlistActivity}:
    &GT; &GT;显示java.lang.NullPointerException 12月11日至9日:23:18.290:
    &GT; &GT; E / AndroidRuntime(481):在
    &GT; &GT; android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    &GT; &GT; 12月11日至九日:23:18.290:E / AndroidRuntime(481):在
    &GT; &GT; android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    &GT; &GT; 12月11日至九日:23:18.290:E / AndroidRuntime(481):在
    &GT; &GT; android.app.ActivityThread.access $ 2300(ActivityThread.java:125)


解决方案

您应该使用获取请求,而不是 POST 请求。

 公共类MainActivity延伸活动{@覆盖
公共无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);    //使异步请求,
    新myAsynctask()执行();
}// ************
//获取JSON字符串
公共字符串getJSONString(){
    StringBuilder的建设者=新的StringBuilder();
    HttpClient的客户端=新DefaultHttpClient();    串urlString=\"http://www.ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json\";    HTTPGET HTTPGET =新HTTPGET(urlString);
    尝试{
        HTT presponse响应= client.execute(HTTPGET);
        状态行状态行= response.getStatusLine();
        INT状态code = statusLine.getStatus code();
        如果(状态code == 200){
            HttpEntity实体= response.getEntity();
            InputStream的内容= entity.getContent();
            读者的BufferedReader =新的BufferedReader(新的InputStreamReader(内容));
            串线;
            而((行= reader.readLine())!= NULL){
                builder.append(线);
            }
        }其他{
            Log.e(的getClass()getSimpleName(),无法下载JSON响应);
        }
    }赶上(ClientProtocolException E){
        e.printStackTrace();
    }赶上(IOException异常五){
        e.printStackTrace();
    }
    返回builder.toString();
}
// ************
私有类myAsynctask扩展的AsyncTask&LT;太虚,太虚,字符串&GT; {    @覆盖
    保护字符串doInBackground(虚空...... PARAMS){        串jsonString = getJSONString();
        返回jsonString;
    }
    @覆盖
    保护无效onPostExecute(字符串jsonString){
        super.onPostExecute(jsonString);
        Log.e(的getClass()getSimpleName(),jsonString);
    }
}

}

i am trying the json parsing but when parse then is gives error httppost method is not supported by this url i put down my code here

http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json

SearchListActivity.java

 public class SearchlistActivity extends Activity {

    private static String url="http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json/";   private static final String TAG_RESULTS = "results";    private static final String TAG_RESPONSEDATA="responseData";    

        @Override
    public void onCreate(Bundle savedInstanceState)

    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.e("json ----","urlll---->"+url);       
        //JSONArray results = null;       
         JSONArray responseData=null;
     // Hashmap for ListView
        ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

        // Creating JSON Parser instance
        JsonParserSearch jParser = new JsonParserSearch();

        // getting JSON string from URL
        JSONObject json = jParser.getJSONFromUrl(url);

        try {
            // Getting Array of Contacts

             responseData = json.getJSONArray(TAG_RESPONSEDATA);
             Log.e("jsonnn data","sfsssss00000-------->"+responseData);

            }
        catch (JSONException e) {
            e.printStackTrace();
        }

    } }

> 

Jsonparsersearch.java

public class JsonParserSearch { static InputStream is = null; static JSONObject jObj = null; static String json = "";

// constructor
public JsonParserSearch() {

}

public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();          

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();

       Log.e("json object url","display"+json);


    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser finaal", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}      }

 >     > > lOGCAT ERROR
    >     > > 
    >     > > 11-09 12:23:17.700: E/json ----(481): urlll---->http://ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json 11-09 12:23:18.260: E/json object url(481): display<HTML> 11-09
    >     > 12:23:18.260: E/json object url(481): <HEAD> 11-09 12:23:18.260:
    >     > E/json object url(481): <TITLE>HTTP method POST is not supported by
    >     > this URL</TITLE> 11-09 12:23:18.260: E/json object url(481): </HEAD>
    >     > 11-09 12:23:18.260: E/json object url(481): <BODY BGCOLOR="#FFFFFF"
    >     > TEXT="#000000"> 11-09 12:23:18.260: E/json object url(481): <H1>HTTP
    >     > method POST is not supported by this URL</H1> 11-09 12:23:18.260:
    >     > E/json object url(481): <H2>Error 405</H2> 11-09 12:23:18.260: E/json
    >     > object url(481): </BODY> 11-09 12:23:18.260: E/json object url(481):
    >     > </HTML> 11-09 12:23:18.260: E/JSON Parser finaal(481): Error parsing
    >     > data org.json.JSONException: Value <HTML> of type java.lang.String
    >     > cannot be converted to JSONObject 11-09 12:23:18.270:
    >     > D/AndroidRuntime(481): Shutting down VM 11-09 12:23:18.270:
    >     > W/dalvikvm(481): threadid=1: thread exiting with uncaught exception
    >     > (group=0x4001d800) 11-09 12:23:18.290: E/AndroidRuntime(481): FATAL
    >     > EXCEPTION: main 11-09 12:23:18.290: E/AndroidRuntime(481):
    >     > java.lang.RuntimeException: Unable to start activity
    >     > ComponentInfo{com.example.ssss/com.example.ssss.SearchlistActivity}:
    >     > java.lang.NullPointerException 11-09 12:23:18.290:
    >     > E/AndroidRuntime(481):  at
    >     > android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    >     > 11-09 12:23:18.290: E/AndroidRuntime(481):  at
    >     > android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    >     > 11-09 12:23:18.290: E/AndroidRuntime(481):  at
    >     > android.app.ActivityThread.access$2300(ActivityThread.java:125)

解决方案

You should use Get request instead of POST request.

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //make async request 
    new myAsynctask().execute();
}

//********************************************
//get json string
public String getJSONString() {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();

    String urlString="http://www.ajax.googleapis.com/ajax/services/search/local?v=1.0&q=restaurants&rsz=8&sll=-27.5595451,-48.6206452&radius=1000&output=json";

    HttpGet httpGet = new HttpGet(urlString);
    try {
        HttpResponse response = client.execute(httpGet);
        StatusLine statusLine = response.getStatusLine();
        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);
            }
        } else {
            Log.e(getClass().getSimpleName(), "Failed to download json response");
        }
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return builder.toString();
}
//********************************************
private class myAsynctask extends AsyncTask<Void, Void, String>{

    @Override
    protected String doInBackground(Void... params) {

        String jsonString=getJSONString();
        return jsonString;
    }
    @Override
    protected void onPostExecute(String jsonString) {
        super.onPostExecute(jsonString);
        Log.e(getClass().getSimpleName(), jsonString);
    }
}

}

这篇关于法不支持JSON解析错误。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆