weibo api 在获取用户信息或者其他信息时报错为: WeiboException 并且无错误码
2015-06-10 14:03
609 查看
今天在开发微博授权登录是碰到的一个问题:
com.zhiwei.weibo4j.model.WeiboException: weiboreach.database: weiboreach.database
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:425)
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:374)
at com.zhiwei.weibo4j.http.HttpClient.get(HttpClient.java:206)
at com.zhiwei.weibo4j.Users.showUserById(Users.java:30)
at com.zhiwei.authUser.dao.impl.AuthUserDaoImpl.addAuthUser(AuthUserDaoImpl.java:49)
at com.zhiwei.servlet.WeiboServlet.doGet(WeiboServlet.java:39)
at com.zhiwei.servlet.WeiboServlet.doPost(WeiboServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.UnknownHostException: weiboreach.database: weiboreach.database
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:382)
上网百度后搜到这样一条帖子:http://www.tuicool.com/articles/FZJfAz2
说的是机器的回环地址问题,原谅我的半路出家,基本没怎么看明白。后来还是按照错误提示最后找到了这里
public Response httpRequest(HttpMethod method, Boolean WithTokenHeader)
throws WeiboException {
InetAddress ipaddr;
int responseCode = -1;
try {
// ipaddr = InetAddress.getLocalHost();
List<Header> headers = new ArrayList<Header>();
if (WithTokenHeader) {
if (token == null) {
throw new IllegalStateException("Oauth2 token is not set!");
}
headers.add(new Header("Authorization", "OAuth2 " + token));
//
headers.add(new Header("API-RemoteIP",
ipaddr.getHostAddress()));
client.getHostConfiguration().getParams()
.setParameter("http.default-headers", headers);
for (Header hd : headers) {
log(hd.getName() + ": " + hd.getValue());
}
}
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
client.executeMethod(method);
Header[] resHeader = method.getResponseHeaders();
responseCode = method.getStatusCode();
log("Response:");
log("https StatusCode:" + String.valueOf(responseCode));
for (Header header : resHeader) {
log(header.getName() + ":" + header.getValue());
}
Response response = new Response();
response.setResponseAsString(method.getResponseBodyAsString());
log(response.toString() + "\n");
if (responseCode != OK)
{
try {
throw new WeiboException(getCause(responseCode),
response.asJSONObject(), method.getStatusCode());
} catch (JSONException e) {
e.printStackTrace();
}
}
return response;
} catch (IOException ioe) {
throw new WeiboException(ioe.getMessage(), ioe, responseCode);
} finally {
method.releaseConnection();
}
}
问题出在headers.add(new Header("API-RemoteIP",
ipaddr.getHostAddress()));这个位置,你可以按照上面的博客改动测试下,也可以直接把这的ip换成你服务器的ip地址测试下
com.zhiwei.weibo4j.model.WeiboException: weiboreach.database: weiboreach.database
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:425)
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:374)
at com.zhiwei.weibo4j.http.HttpClient.get(HttpClient.java:206)
at com.zhiwei.weibo4j.Users.showUserById(Users.java:30)
at com.zhiwei.authUser.dao.impl.AuthUserDaoImpl.addAuthUser(AuthUserDaoImpl.java:49)
at com.zhiwei.servlet.WeiboServlet.doGet(WeiboServlet.java:39)
at com.zhiwei.servlet.WeiboServlet.doPost(WeiboServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.net.UnknownHostException: weiboreach.database: weiboreach.database
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
at com.zhiwei.weibo4j.http.HttpClient.httpRequest(HttpClient.java:382)
上网百度后搜到这样一条帖子:http://www.tuicool.com/articles/FZJfAz2
说的是机器的回环地址问题,原谅我的半路出家,基本没怎么看明白。后来还是按照错误提示最后找到了这里
public Response httpRequest(HttpMethod method, Boolean WithTokenHeader)
throws WeiboException {
InetAddress ipaddr;
int responseCode = -1;
try {
// ipaddr = InetAddress.getLocalHost();
List<Header> headers = new ArrayList<Header>();
if (WithTokenHeader) {
if (token == null) {
throw new IllegalStateException("Oauth2 token is not set!");
}
headers.add(new Header("Authorization", "OAuth2 " + token));
//
headers.add(new Header("API-RemoteIP",
ipaddr.getHostAddress()));
client.getHostConfiguration().getParams()
.setParameter("http.default-headers", headers);
for (Header hd : headers) {
log(hd.getName() + ": " + hd.getValue());
}
}
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
client.executeMethod(method);
Header[] resHeader = method.getResponseHeaders();
responseCode = method.getStatusCode();
log("Response:");
log("https StatusCode:" + String.valueOf(responseCode));
for (Header header : resHeader) {
log(header.getName() + ":" + header.getValue());
}
Response response = new Response();
response.setResponseAsString(method.getResponseBodyAsString());
log(response.toString() + "\n");
if (responseCode != OK)
{
try {
throw new WeiboException(getCause(responseCode),
response.asJSONObject(), method.getStatusCode());
} catch (JSONException e) {
e.printStackTrace();
}
}
return response;
} catch (IOException ioe) {
throw new WeiboException(ioe.getMessage(), ioe, responseCode);
} finally {
method.releaseConnection();
}
}
问题出在headers.add(new Header("API-RemoteIP",
ipaddr.getHostAddress()));这个位置,你可以按照上面的博客改动测试下,也可以直接把这的ip换成你服务器的ip地址测试下
相关文章推荐
- 写了///注释,但是其他程序集引用时,无法弹出提示信息
- 东大oj-1591 Circle of friends
- jquery的$.extend和$.fn.extend作用及区别
- 彻底解决Spring MVC 中文乱码 问题
- 东大oj-1591 Circle of friends
- 彻底解决Spring MVC 中文乱码 问题
- EasyIDE ASP Framework - ASP快速开发框架
- CSS3影子 box-shadow使用和技巧总结
- 东大oj-1591 Circle of friends
- git 查看远程分支、本地分支、创建分支、把分支推到远程repository、删除本地分支
- 设计模式的六大原则
- bc4j的简单介绍
- 什么是P问题、NP问题和NPC问题
- 三层架构及MVC
- Searchable 事例
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接---个人整理
- CSS3中Transition属性详解以及示例分享
- cannot change ownership to uid 1000.gid 1000;operation not permitted
- 开始刷题leetcode day37:Validate Binary Search Tree
- GPIO接口解析【转】