日期:2014-05-17  浏览次数:20685 次

程序使用的URL出现异常,请大家帮忙看一下
自己做的人人自动登录程序,并访问好友页面程序,这是程序:
public String notify(String url) {  
  HttpGet get = new HttpGet(url);  
  ResponseHandler<String> responseHandler = new BasicResponseHandler();  
  String txt = null;
  String filepath = null;
  try {  
  txt = httpClient.execute(get, responseHandler);
} catch (ClientProtocolException e) {  
  e.printStackTrace();  
  } catch (IOException e) {  
  e.printStackTrace();  
  } 
  finally {  
  get.abort();  
  }  
  return txt;  
  }
public static void main(String[] args) {  
  RenRenNotify notify = new RenRenNotify("123456789@123.com",  
  "123456789");//这个代码就不贴出来了,没有问题,可以登录上,已经测试过。

  System.out.println(notify.notify("http://friend.renren.com/shareFriends?t=0.2351487116323684&p={%22init%22:true,%22uid%22:true,%22uhead%22:true,%22uname%22:true,%22group%22:true,%22net%22:true,%22param%22:{%22guest%22:292794698}}"));//这是出问题的URL,也是要访问的URL,换成其他的正规URL可以,就是这个不可以,程序报出异常
  }  
这是终端显示的异常:
Exception in thread "main" java.lang.IllegalArgumentException
at java.net.URI.create(URI.java:842)
at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:69)
at Visitall.RenRenNotify.notify(RenRenNotify.java:153)
at Visitall.RenRenNotify.main(RenRenNotify.java:317)

Caused by: java.net.URISyntaxException: Illegal character in query at index 61: http://friend.renren.com/shareFriends?t=0.2351487116323684&p={"init":true,"uid":true,"uhead":true,"uname":true,"group":true,"net":true,"param":{"guest":292794698}}
at java.net.URI$Parser.fail(URI.java:2809)
at java.net.URI$Parser.checkChars(URI.java:2982)
at java.net.URI$Parser.parseHierarchical(URI.java:3072)
at java.net.URI$Parser.parse(URI.java:3014)
at java.net.URI.<init>(URI.java:578)
at java.net.URI.create(URI.java:840)
... 3 more

在网上查,说自己这个URL不正规,但是把这条URL放到chrome浏览器,可以轻松打开,并访问,不知道这里存在URL字符无法识别的问题,请大家帮忙看一下,谢谢。

------解决方案--------------------
对了,URLEncode从?之后的参数开始,不要把域名和路径也放进去了。