Ошибка 403 в HTTPConnection POST в J2ME Nokia S40

Я разрабатываю приложения для S40 с использованием Nokia SDK 2.0 (J2ME), которые могут подключаться через REST API к серверу.

Однако некоторые API (с использованием метода POST) приводят к ошибке 403 - Запрещено. Я проверил API на сайте apigee с точно такими же заголовком и телом, и результат оказался на удивление успешным (ответ 200 OK). К сожалению, я не могу поделиться URL-адресом из-за конфиденциальности моего клиента.

Но я использую эту функцию:

public static String sendHTTPPOST(String url, String parameter, String cookie) {
    HttpConnection httpConnection = null;
    DataInputStream dis = null;
    DataOutputStream dos = null;
    StringBuffer responseMessage = new StringBuffer();
    try {
        httpConnection = (HttpConnection) Connector.open(url, Connector.READ_WRITE);
        httpConnection.setRequestMethod(HttpConnection.POST);
        httpConnection.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
        httpConnection.setRequestProperty("Content-Type", "application/json");
    httpConnection.setRequestProperty("Cookie", "eid="+cookie);
        httpConnection.setRequestProperty("Content-length", "" + parameter.getBytes().length);

        dos = httpConnection.openDataOutputStream();
        byte[] request_body = parameter.getBytes();
        for (int i = 0; i < request_body.length; i++) {
            dos.writeByte(request_body[i]);
        }

        dos.flush();

    dis = new DataInputStream(httpConnection.openInputStream());
        int ch;
        while ((ch = dis.read()) != -1) {
            responseMessage.append((char) ch);
        }
    } catch (Exception e) {
        e.printStackTrace();
        responseMessage.append("ERROR");
    } finally {
        try {
            if (httpConnection != null) {
                httpConnection.close();
            }
            if (dis != null) {
                dis.close();
            }
            if (dos != null) {
                dos.close();
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
    return responseMessage.toString();
}

Параметр является частью тела POST, cookie - частью заголовка POST. И это всегда приводит к ошибке 403.

Есть ли вероятность, что код может привести к разному ответу на apigee (в Интернете) и в моих приложениях (приложениях j2me)? Если да, то как это решить?

Буду признателен за любую помощь. :)


person Ray Rizaldy    schedule 14.03.2013    source источник


Ответы (1)


Я получил ответ, мне следовало проверить больше на сеансе. Я забыл его закодировать.

person Ray Rizaldy    schedule 22.03.2013