java.lang.IllegalArgumentException:Android 中索引 77 处的查询中存在非法字符
java.lang.IllegalArgumentException:llegal character in query at index 77 in Android
我正在尝试使用 json
解析 Facebook 提要
显示此错误
06-02 16:53:33.112: D/ee:(29180): java.lang.IllegalArgumentException:
Illegal character in query at index 77:
https://graph.facebook.com/331394590231184/feed?access_token=******&client_id=**&client_secret=*****?
我使用代码:
private static String url = "https://graph.facebook.com/331394590231184/feed?access_token=**|*****&client_id=***&client_secret=****";
JSONParser jParser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
JSONArray data = json.getJSONArray("data");
JSONParser 代码:
static InputStream is = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
https://www.google.com/search?q=valid+url+characters -- do you see anything unusual around character 77? Also, https://www.google.com/search?q=encode+url
顺便说一句,编辑问题不会删除以前的修订:https://whosebug.com/posts/30601529/revisions
您正在构建一个包含多个 ?
的无效 URL,您应该将方案、主机和路径作为 url
变量传递,然后传递参数分别为:
private static String url = "https://graph.facebook.com/331394590231184/feed";
JSONParser jParser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("access_token", "**|*****"));
params.add(new BasicNameValuePair("client_id", "***"));
params.add(new BasicNameValuePair("client_secret", "****"));
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
JSONArray data = json.getJSONArray("data");
另一种修复它的方法(无论如何您都应该这样做)是确保 params
在您的 JSONParser
代码中处理它之前包含任何内容:
static InputStream is = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
if (params != null && params.size() > 0){
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
}
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
我正在尝试使用 json
解析 Facebook 提要显示此错误
06-02 16:53:33.112: D/ee:(29180): java.lang.IllegalArgumentException: Illegal character in query at index 77: https://graph.facebook.com/331394590231184/feed?access_token=******&client_id=**&client_secret=*****?
我使用代码:
private static String url = "https://graph.facebook.com/331394590231184/feed?access_token=**|*****&client_id=***&client_secret=****";
JSONParser jParser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
JSONArray data = json.getJSONArray("data");
JSONParser 代码:
static InputStream is = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
https://www.google.com/search?q=valid+url+characters -- do you see anything unusual around character 77? Also, https://www.google.com/search?q=encode+url
顺便说一句,编辑问题不会删除以前的修订:https://whosebug.com/posts/30601529/revisions
您正在构建一个包含多个 ?
的无效 URL,您应该将方案、主机和路径作为 url
变量传递,然后传递参数分别为:
private static String url = "https://graph.facebook.com/331394590231184/feed";
JSONParser jParser = new JSONParser();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("access_token", "**|*****"));
params.add(new BasicNameValuePair("client_id", "***"));
params.add(new BasicNameValuePair("client_secret", "****"));
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
JSONArray data = json.getJSONArray("data");
另一种修复它的方法(无论如何您都应该这样做)是确保 params
在您的 JSONParser
代码中处理它之前包含任何内容:
static InputStream is = null;
DefaultHttpClient httpClient = new DefaultHttpClient();
if (params != null && params.size() > 0){
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
}
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();