2016-11-30 3 views
2

Я пытаюсь использовать Codename One для отправки запроса POST с JSON BODY. Вот код, который делает соединение и посылает сообщениеcodenameone отправить JSON BODY в POST

ByteArrayOutputStream bOutput = new ByteArrayOutputStream(); 
    bOutput.write("{\"Key1\": \"Value1\",\"Key2\": \"Value2\"}".getBytes()); 

    try { 
     connectAction connReq = new connectAction(); 

     connReq.setPost(true); 
     connReq.addRequestHeader("Authorization", "1234"); 
     connReq.addRequestHeader("client_id","4321"); 
     connReq.addRequestHeader("Content-Type","application/json"); 
     connReq.setUrl("https://myapi.com/test"); 
     connReq.setHttpMethod("POST"); 
     connReq.buildRequestBody(bOutput); 
     NetworkManager.getInstance().addToQueueAndWait(connReq); 
     Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(connReq.getResponseData()), "UTF-8")); 
     return result; 
    } 
    catch(Exception err) { 
     System.err.println(err); 
     return null; 
    } 

А вот производный класс с buildRequestBody Override

public class connectAction extends ConnectionRequest 
{ 

    connectAction() 
    { 

    } 



    @Override 
    public void buildRequestBody(OutputStream os) 
    { 

    } 
} 

Теперь, когда я устанавливаю точку останова в общественном ничтожной buildRequestBody (OutputStream Os) можно видеть, что 'ОС' имеет значение

OS = (java.io.ByteArrayOutputStream) { "Клавиша1": "Значение1", "key2": "значение2"}

Итак, я знаю, что ценность делает это так далеко.

Однако при запуске сетевого монитора заполняется только заголовок запроса, а заголовок пуст.

Любая помощь действительно ценится.

Благодаря

ответ

2

попробовать следующие коды надеюсь, что это поможет

// convert the object to a JSON document 
HashMap hashtable = new HashMap(); 
hashtable.put("Key1", "Value1"); 
hashtable.put("Key2", "Value2"); 
final String payload = Result.fromContent(hashtable).toString(); 

protected void buildRequestBody(OutputStream os) throws IOException { 
    os.write(payload.getBytes("UTF-8")); 
} 
+0

Огромное спасибо !!!!! Я действительно боролся с этим. Я собирался изменить рамки и искать что-то еще :-). Спасибо Спасибо! –

+0

Вы больше всего приветствуетесь – tizbn

+0

Исправлено форматирование кода –

Смежные вопросы