Apache Abdera Client POST не публикуется в IBM Connections API
У меня есть веб-сервис, который использует библиотеку Apache Abdera для связи с REST API нашего сервера IBM Connections 4.
Проблема в том, что мой запрос не работает. Когда я говорю, что он не работает, я имею в виду, что все мои операции GET работают нормально, возвращая данные, которые мне нужны, но моя первая операция POST, которую я пытался реализовать, не удалась. Мой объект ClientResponse возвращается с типом "REDIRECTION" и StatusText "found". Мои данные не обновляются в соединениях.
Обратите внимание, что я вызываю эту службу из вызова JSONP AJAX из-за междоменных ограничений (этот веб-сервис находится на том же сервере и в домене, что и среда подключения).
Вот мой код: (PS Я являюсь нубом из 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)+")");
}
Вот console.log() из моего вызова Ajax:
Ext.data.JsonP.callback3({"Status":"REDIRECTION : Found"})
1 ответ
Мне удалось решить мою проблему. Проблема заключалась в том, что когда я выполнял аутентификацию, мой URI аутентификации указывал на http, а наш сервер соединений автоматически перенаправлял на https. Изменение этого URI на https решило мою проблему перенаправления