Проблемы соединения HttpsURLConnection - PullRequest
5 голосов
/ 27 сентября 2010

У меня проблема с подключением HttpsURLC, которую я не могу решить.По сути, я отправляю некоторую информацию на сервер, и если некоторые из этих данных неверны, сервер отправляет мне код ответа 500.Тем не менее, он также отправляет сообщение в ответе, сообщая, какой бит данных был неправильным.Проблема в том, что сообщение всегда пустое, когда я его читаю. Я думаю, это потому, что исключение filenotfound всегда генерируется до того, как поток может быть прочитан.Я прав?Я также пытался прочитать поток ошибок, но он всегда пуст.Вот фрагмент кода:

    conn = (HttpsURLConnection) connectURL.openConnection();
    conn.setDoOutput(true);
    conn.setConnectTimeout(30000);
    conn.setReadTimeout(30000);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-Length",
         Integer.toString(outString.getBytes().length));
    DataOutputStream wr = new DataOutputStream(conn
      .getOutputStream());
    wr.write(outString.getBytes());
    wr.flush();
    wr.close();
    if(conn.getResponseCode>400{

    String response = getErrorResponse(conn);

    public String getErrorResponse(HttpsURLConnection conn) {
    Log.i(TAG, "in getResponse");
    InputStream is = null;
    try {

     //is = conn.getInputStream();
    is = conn.getErrorStream();
    // scoop up the reply from the server
    int ch;
    StringBuffer sb = new StringBuffer();
    while ((ch = is.read()) != -1) {
     sb.append((char) ch);
    }
    //System.out.println(sb.toString());
    return sb.toString();
    // return conferenceId;
   }
    catch (Exception e){
    e.printStackTrace();
    }
    }

Ответы [ 3 ]

3 голосов
/ 29 октября 2010

Итак, просто, чтобы продолжить, вот как я решил это:

public static String getResponse(HttpsURLConnection conn) {
    Log.i(TAG, "in getResponse");
    InputStream is = null;
    try {
        if(conn.getResponseCode()>=400){
            is = conn.getErrorStream();
        }
        else{
            is=conn.getInputStream();
        }
        ...read stream...
}

Кажется, что их вызов таким образом вызвал поток ошибок с сообщением.Спасибо за предложения!

0 голосов
/ 01 октября 2010

Вы управляете сервером?Другими словами, вы написали процесс, который выполняется на сервере и прослушивает порт, к которому вы пытаетесь получить доступ?

Если вы это сделали, то вы также должны иметь возможность отладить его и понять, почему ваш процессвозвращает 404.

Если вы этого не сделали, опишите вашу архитектуру (HTTP-сервер, компонент, который он вызывает для ответа на ваш запрос HTTP (S) и т. д.), и мы возьмем его оттуда.*

В самом простом случае, когда HTTP-сервер является сервером Apache и передает управление какому-либо PHP-сценарию, это означает, что Apache не может назначить ваш запрос чему-либо.Скорее всего, неверная конфигурация веб-сервера.Укажите более подробную информацию, и мы поможем вам.

0 голосов
/ 28 сентября 2010

Попробуйте установить свойство запроса типа контента в "application/x-www-form-urlencoded"

То же самое упоминается по этой ссылке: http://developers.sun.com/mobility/midp/ttips/HTTPPost/

The Content-Length and Content-Type headers are critical because they tell the web server how many bytes of data to expect, and what kind, identified by a MIME type.

In MIDP clients the two most popular MIME types are application/octet-stream, to send raw binary data, and application/x-www-form-urlencoded, to send name-value pairs

...