0

在我的代码中,我在执行对服务器的请求的行中捕获了 IllegalArgumentException(索引 85 处的查询中的非法字符)。使用被构建为模式命令,另一个任务完成正确但不是这样:

public CreateCommentTask(String barcodeId, String ball, String comment,
        String sign) {
    super(getApplicationUrl() + "?command=createComment" + "&barcodeId="
            + barcodeId + "&ball=" + ball + "&text=" + comment
            + "&sessionId=" + sign);
    // TODO Auto-generated constructor stub
}

所以,我只有地址和一些字符串格式的数据。我的应用程序在这一行崩溃:

HttpResponse response = client.execute(task.createRequest());

你有什么想法?

4

2 回答 2

2

我希望您需要对参数(很可能是comment变量)进行 URL 编码。

编辑:您可以使用 java.net.URI 生成正确的查询。试试这个:

super(new URI(getApplicationUrl() + "?command=createComment" + "&barcodeId="
            + barcodeId + "&ball=" + ball + "&text=" + comment
            + "&sessionId=" + sign).toString());
于 2011-05-28T15:01:23.920 回答
0

为什么不事先构建字符串并记录它?然后你可以看到字符 85 是什么。如果这就是日志所说的,我保证问题就在那里。如果您不知道原因,请将生成的字符串连同日志的其余部分一起发布。

public CreateCommentTask(String barcodeId, String ball, String comment,
        String sign) {
    String query = getApplicationUrl() + "?command=createComment" + "&barcodeId="
            + barcodeId + "&ball=" + ball + "&text=" + comment
            + "&sessionId=" + sign;
    Log.d("HOLYCRAP", query);
    super(query);
}
于 2011-05-31T11:11:41.340 回答