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 решило мою проблему перенаправления

Другие вопросы по тегам