2011-12-14 1 views
2

Не могли бы вы прокомментировать, что случилось с этим кодом реселлера на стороне клиента.запрос клиента POST-клиента с заголовком и JSON

Необходимо:

  1. Добавить HTTP заголовок X-MF-Auth-Token со значением маркера
  2. Место JSON файла в теле запроса HTTP
  3. запрос Сделать POST на сервер

Сообщение запроса генерирует Ошибка «400». Большое спасибо!

 ClientResource cr = new ClientResource(servername + "/json/place"); 

     cr.getRequest().getAttributes().put("X-MF-Auth-Token", token); 

     Form form = new Form(); 

     form.add("Category", ""); 
     form.add("CategoryId", "A1EECAB9-3E66-4F14-92E9-465EDFB22BA7"); 
     form.add("Latitude", "0"); 
     form.add("Longitude", "0"); 
     form.add("Name", "Loremipsum"); 
     form.add("PlaceId", "00000000-0000-0000-0000-000000000099"); 

    cr.post(form, MediaType.APPLICATION_JSON); 

    if (cr.getStatus().isSuccess()) { 
     // Register Successful 
     Log.v("Register()", "Successeful"); 
     return true; 
    } else { 
     Log.v("Register()", "ERROR"); 
     return false; 
    } 

    } catch (ResourceException e) { 
     // Login Error 
    Log.v("AddPlace() error:", e.getStatus().toString()); 
    return false; 
    } 

ответ

0

я думаю, что вы не добавления X-MF-Auth-Token к заголовку.

попробовать

Form headers = (Form) cr.getRequest().getAttributes("org.restlet.http.headers"); 
if (headers == null) { 
    headers = new Form(); 
    cr.getRequest().getAttributes.put("org.restlet.http.headers", headers); 
} 
headers.add("X-MF-Auth-Token", token); 
+0

Спасибо, это полезно, но до сих пор не работает. Необходимо установить Content-Type в JSON, но он отправляет Content-Type: application/x-www-form-urlencoded. Есть идеи? Большое спасибо. – user1096826

+0

Посмотрите: http://stackoverflow.com/questions/2033132/restlet-post-using-json – mfirry

+0

@mfirry Эта ссылка рассказывает об использовании сервера RESTlet и не описывает ничего о стороне клиента. То, о чем просил OP, было на стороне клиента. – JMTyler

1

Вы можете использовать JSONObject вместо формы:

JSONObject jo = new JSONObject(); 
try { 
    jo.add("Category", ""); 
    jo.add("CategoryId", "A1EECAB9-3E66-4F14-92E9-465EDFB22BA7"); 
    jo.add("Latitude", "0"); 
    jo.add("Longitude", "0"); 
    jo.add("Name", "Loremipsum"); 
    jo.add("PlaceId", "00000000-0000-0000-0000-000000000099"); 
} catch (JSONException ex) {   
} 
cr.post(new JsonRepresentation(jo), MediaType.APPLICATION_JSON);