I have a web service that is using the Apache Abdera lib to communicate with our IBM Connections 4 server's REST API.
The problem I'm having, is that my request doesn't work. When I say that it is not working, I mean that all my GET operations work fine returning the data I'm after, but my first POST operation I tried to implement fails. My ClientResponse object returns with Type "REDIRECTION" and the StatusText "found". My data does not update on connections.
Please note that I'm calling this service from a JSONP AJAX call due to Cross-Domain restrictions.(This webservice is on the same server and domain as our connections environment)
Here is my code: (P.S. I'm a java noob trying to post a small micro blog entry to the connections status updates)
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)+")");
}
Here is the console.log() from my Ajax call :
Ext.data.JsonP.callback3({"Status":"REDIRECTION : Found"})
I have managed to resolve my problem. The problem came in that when I do the authentication, my authentication uri was pointing to http and our connections server auto redirect to https. Changing this uri to https resolved my redirection issue