2013-03-14 2 views
0

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

Однако есть некоторые 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, печенье является частью заголовка POST. И всегда результат 403 Ошибка.

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

Поймите любую помощь. :)

ответ

0

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