2015-05-24 1 views
2

Я использую почтальон клиент для отправки запроса RES на этот беспокойный маршрутизатор:Restlet пост getFirstValue всегда возвращает нуль

public Representation createAgent(Representation entity) { 
    Form form = new Form(entity); 

    String user = form.getFirstValue("user"); 
    String password = form.getFirstValue("password"); 


    System.out.println("user: "+ user); 
    System.out.println("password: "+ password); 
    System.out.println("form: "+ form.toString()); 

    return (agent.save(getUser(),getPassword())) 
      ? new StringRepresentation("user "+ user +" created", MediaType.TEXT_PLAIN) 
      : new StringRepresentation("agent creation failed",MediaType.TEXT_PLAIN); 

} 

Usera и пароль всегда нулевой, хотя печать form.toString() показывает:

[[------WebKitFormBoundaryb4FkGv8CgddIf8rn 
Content-Disposition: form-data; name="user" 

ali 
------WebKitFormBoundaryb4FkGv8CgddIf8rn 
Content-Disposition: form-data; name="password" 

dsndfjo32 
------WebKitFormBoundaryb4FkGv8CgddIf8rn-- 
]] 

Ниже запрос полного почтальона в режиме предварительного просмотра:

POST /v1/agents HTTP/1.1 
Host: localhost:9000 
Authorization: Basic c2NvdHQ6amRmZ2pkZnRnaA== 
Cache-Control: no-cache 
Postman-Token: ef58fda2-8974-0d9f-7a23-10c94df8552e 
Content-Type: multipart/form-data; boundary=----      WebKitFormBoundary7MA4YWxkTrZu0gW 

----WebKitFormBoundary7MA4YWxkTrZu0gW 
    Content-Disposition: form-data; name="user" 

ali 
----WebKitFormBoundary7MA4YWxkTrZu0gW 
    Content-Disposition: form-data; name="password" 

    dsndfjo32 
----WebKitFormBoundary7MA4YWxkTrZu0gW 

ответ

3

в самом деле, если вы посмотрите на го e тип содержимого данных, отправляемых в рамках вашего запроса, это соответствует многостраничному контенту, а не форме, закодированной в URL.

Код, используемый в ресурсе вашего сервера, применим только к URL-кодированной форме (тип контента application/x-www-form-urlencoded). Так что это нормально, что вы ничего не можете получить. Для информации полезная нагрузка такого подхода будет примерно такой:

user=my+user&password=my+password 

Возможно, это то, что вы хотите. Если это так, выберите вкладку x-www-form-urlencoded в Postman ...

Multipart обычно используется, когда вы хотите загрузить файл с дополнительными данными. Если вы хотите многопрофильное, вы должны посмотреть на эту ссылку: http://restlet.com/technical-resources/restlet-framework/guide/2.3/extensions/fileupload.

Надеюсь, он вам порекомендует, Thierry

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

  • Нет связанных вопросов^_^