法不支持JSON解析错误。 [英] Method not supported error on parsing 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
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 ofPOST
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屋!