【发布时间】:2013-02-22 00:47:50
【问题描述】:
我正在尝试从远程服务器获取响应。这是我的代码:
private static String baseRequestUrl = "http://www.pappico.ru/promo.php?action=";
@SuppressWarnings("deprecation")
public String executeRequest(String url) {
String res = "";
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response;
try {
//url = URLEncoder.encode(url, "UTF-8");
HttpGet httpGet = new HttpGet(url);
response = httpClient.execute(httpGet);
Log.d("MAPOFRUSSIA", response.getStatusLine().toString());
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inStream = entity.getContent();
res = streamToString(inStream);
inStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
public String registerUser(int userId, String userName) {
String res = "";
String request = baseRequestUrl + "RegisterUser¶ms={\"userId\":" +
userId + ",\"userName\":\"" + userName + "\"}";
res = executeRequest(request);
return res;
}
我在HttpGet httpGet = new HttpGet(url) 行中遇到以下异常:
java.lang.IllegalArgumentException:索引 59 处的查询中存在非法字符:http://www.pappico.ru/promo.php?action=RegisterUser¶ms={"userId":1,"userName":"Юрий Клинских"}
'{' 字符有什么问题?我已经阅读了一些关于此异常的帖子并找到了解决方案,但此解决方案会导致另一个异常:如果我取消注释行 url = URLEncoder.encode(url, "UTF-8"); 它会在行 response = httpClient.execute(httpGet); 出现这样的异常:
java.lang.IllegalStateException:目标主机不能为空,或在参数中设置。 scheme=null, host=null, path=http://www.pappico.ru/promo.php?action=RegisterUser¶ms={"userId":1,"userName":"Юрий+Клинских"}
不知道我该怎么做才能让它工作。任何帮助将不胜感激:)
【问题讨论】:
标签: java android httpclient