当前位置: 首页 > 面试题库 >

java.lang.IllegalArgumentException:查询索引为59的非法字符

盖锐
2023-03-14
问题内容

我在做什么: 我正在尝试在android中进行反向地理编码

我收到以下错误消息:
java.lang.IllegalArgumentException:索引59处的查询中的非法字符:http
:
//maps.google.com/maps/api/geocode/json?
address=
Agram,Bengaluru,卡纳塔克邦,印度&sensor
= false

注意:该请求在浏览器中获得json响应,但不是来自下面的类

此行给出此错误::

HttpGet httpget = new HttpGet(url);

JSONfunctions.java

public class JSONfunctions {

    public static JSONObject getJSONfromURL(String url) {
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        // Download JSON data from URL
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpGet httpget = new HttpGet(url);

            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection " + e.toString());
        }

        // Convert response to string
        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();
            result = sb.toString();
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        try {

            jArray = new JSONObject(result);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

        return jArray;
    }
}

问题答案:

用于在将参数URLEncoder.encode()值放入URL字符串之前对address参数值进行编码"Agram, Bengaluru, Karnataka, India",以使其变为类似

http://maps.google.com/maps/api/geocode/json?address=Agram,+Bengaluru,+Karnataka,+India&sensor=false

即空格变为+和其他特殊八位字节表示为%xx

浏览器会自动对地址栏中输入的字符串进行智能URL编码,因此这就是它在此处工作的原因。



 类似资料:
  • 我正在做的:我试图在android中做一个反向地理编码 这一行给出了这个错误:: jsonFunctions.java

  • 问题内容: 我正在尝试在用户注册后发送确认电子邮件。我为此使用JavaMail库和Java 8 Base64 util类。 我以以下方式对用户电子邮件进行编码: 在哪里: 然后以这种方式在ConfirmRegistrationCommand中对此进行解码: 当我尝试解码时: 我正在。 我尝试使用基本的编码/解码器(而不是URL编码),但没有成功。 解决了: 问题是下一个-在该行中: 我在字节数组上

  • 我正在尝试在用户注册后发送确认邮件。为此,我使用了JavaMail库和Java8 Base64 util类。 然后以如下方式在ConfirmRegistrationCommand中解码: 当我试图解码时: 我正在获取。 我尝试使用基本的编码/解码器(不是URL的)没有成功。 已解决:

  • 我正在通过Android应用程序发送byte[]作为编码字符串。我转换Byte[]的方式如下(基本上Byte[]是拇指扫描/指纹扫描图像):Android 这就是我在服务器端(Java)解码的方式: 它会生成以下异常: ]]ServletException.Java.lang.IllegalArgumentException的根本原因:非法的base64字符-1在Java.util.base64$

  • 我认为索引146处字符是''。那个角色怎么了? 谢谢你的建议。 这是我构建查询的代码:

  • 在我的应用程序中,我必须根据用户选择的类型和子类型从JSON服务中获取数据,并将数据显示给用户。 示例代码: 当我发出http请求时,会出现此异常: 以下是我试图解决这个问题的方法: 代码段: 这里,我用两个字符串而不是一个finalUrl字符串将URL传递给asynctask。 这还会引发异常,例如: 现在没有错误了。我从状态代码为OK(200)的服务得到响应。但结果中没有数据。 如果需要的话,