【发布时间】:2013-04-29 13:54:17
【问题描述】:
我有一个使用 Apache Abdera 库与我们的 IBM Connections 4 服务器的 REST API 通信的 Web 服务。
我遇到的问题是我的请求不起作用。当我说它不起作用时,我的意思是我所有的 GET 操作都可以正常返回我所追求的数据,但是我尝试实现的第一个 POST 操作失败了。我的 ClientResponse 对象返回类型“REDIRECTION”和“找到”状态文本。我的数据不会在连接上更新。
请注意,由于跨域限制,我通过 JSONP AJAX 调用调用此服务。(此 Web 服务与我们的连接环境位于同一服务器和域上)
这是我的代码:(P.S. 我是一个 java 菜鸟,试图在微博上发布一个关于连接状态更新的小条目)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
JSONObject json;
JSONObject rtn = new JSONObject();
String rtnVal = "";
String username = request.getParameter("username");
String password = request.getParameter("password");
String statusPost = request.getParameter("msg");
String container = request.getParameter("container");
String url = Authentication.uri+"/connections/opensocial/basic/rest/ublog/@me/@all";
if(container != null){
url += "/"+container+"/comments";
}
json = new JSONObject();
json.put("content", statusPost);
try {
AbderaClient client = Authentication.getClient(Authentication.EMPTY, username, password, Authentication.uri);
RequestOptions options = client.getDefaultRequestOptions();
options.setFollowRedirects(true);
InputStream inStream = new ByteArrayInputStream(json.toString().getBytes("UTF-8"));
ClientResponse resp = client.post(url, inStream, options);
rtn.put("Status", resp.getType() + " : " + resp.getStatusText());
} catch (URISyntaxException e) {
e.printStackTrace();
}
response.setContentType("application/json");
PrintWriter out = response.getWriter();
out.println(request.getParameter("callback")+ "(" + (rtn)+")");
}
这是我的 Ajax 调用中的 console.log():
Ext.data.JsonP.callback3({"Status":"REDIRECTION : Found"})
【问题讨论】:
-
我已经设法解决了我的问题。问题在于,当我进行身份验证时,我的身份验证 uri 指向 http,而我们的连接服务器自动重定向到 https。将此 uri 更改为 https 解决了我的重定向问题。
标签: java ibm-connections apache-abdera