Подтвердить что ты не робот

Ошибка URLConnection - java.io.IOException: сервер вернул код ответа HTTP: 400 для URL

Я пытаюсь подключиться к URL-адресу из приложения для рабочего стола, и я получаю сообщение об ошибке, указанное в заголовке моего вопроса, но когда я пытался подключиться к тому же URL-адресу из сервлета, все работает нормально. Когда я загружаю URL-адрес из браузера, все работает нормально. Я использую тот же код в сервлете. Код был в библиотеке, когда он не работал, я вытащил код в класс в текущем проекте, но он не сработал.

URL https://graph.facebook.com/me.

Фрагмент кода.

public static String post(String urlSpec, String data) throws Exception {
    URL url = new URL(urlSpec);
    URLConnection connection = url.openConnection();
    connection.setDoOutput(true);
    OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
    writer.write(data);
    writer.flush();

    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String line = "";
    StringBuilder builder = new StringBuilder();
    while((line = reader.readLine()) != null) {
        builder.append(line);
    }
    return builder.toString();
}   

Я немного запутался здесь, есть ли что-то, что присутствует, это сервлет, который не является обычным настольным приложением?

Спасибо.

FULL STACK TRACE

Feb 8, 2011 9:54:14 AM com.trinisoftinc.jiraffe.objects.FacebookAlbum create
SEVERE: null
java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.facebook.com/me
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1313)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:234)
        at com.jiraffe.helpers.Util.post(Util.java:49)
        at com.trinisoftinc.jiraffe.objects.FacebookAlbum.create(FacebookAlbum.java:211)
        at com.trinisoftinc.jiraffe.objects.FacebookAlbum.main(FacebookAlbum.java:261)
4b9b3361

Ответ 1

Наконец-то я нашел проблему. Конечно, это мой код. Одна часть кода, который я не опубликовал, - это значение данных. данные должны содержать только имя и описание, но я прохожу больше, чем имя и описание.

Ответ 2

EDIT: вам нужно найти точное сообщение об ошибке, которое facebook отправляет в ответ Вы можете изменить свой код, чтобы получить сообщение из потока ошибок следующим образом:

HttpURLConnection httpConn = (HttpURLConnection)connection;
InputStream is;
if (httpConn.getResponseCode() >= 400) {
    is = httpConn.getErrorStream();
} else {
    is = httpConn.getInputStream();
}

Посмотрите, как вы передаете пользовательский контекст Вот некоторая информация, которая могла бы помочь вам:

Посмотрите на сообщение об ошибке за кодом ответа 400:

"Платформа Facebook" "invalid_request" "Активный токен доступа должен использоваться для запроса информации о текущем пользователе *

Здесь вы найдете решение

HTTP/1.1 400 Bad Request
...
WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "An active access token must be used to query information about the current user."
...