2017-12-23 6 views
1

http://localhost:8080/appにPUTリクエストを送信して、Content-Type = application/jsonというヘッダーと本文{"appName": "Fake app (for testing)"}を送信すると、Spring Boot RESTfull APIが正しく動作することをPostmanとテストしました。この呼び出しからの応答は単純なランダムな文字列で、ステータスは「200 OK」です。私は同じ要求をコードネーム1で成功させずに複製しようとしましたが、テキスト400: nullでダイアログエラーが発生します。次のコードで何が間違っていますか?Codename One - RESTfullサーバーへの簡単なリクエスト

public static void registerApp() { 
     ConnectionRequest request = new ConnectionRequest(); 
     request.setContentType("application/json"); 
     request.setUrl("http://localhost:8080/app"); 
     request.setHttpMethod("PUT"); 

     String appName = Display.getInstance().getProperty("AppName", ""); 

     request.addArgument("appName", appName); 

     request.addResponseListener((e) -> { 
      Log.p("App registered"); 
     }); 

     // request will be handled asynchronously 
     NetworkManager.getInstance().addToQueue(request); 
} 

私はまた、(成功の)サーバによって返されたランダムな文字列にいくつかの操作を行う必要があるが、私はその文字列を取得する方法がわかりません。

enter image description here

答えて

1

addArgumentので、あなたは(あなたがネットワーク監視ツールで見ることができる)になっていることは、体内のappName=appNameあるフォーム送信ではないJSON引数に使用される標準的なHTTPの引数を使用しています。あなたが使用することができ

request.setRequestBody("{\"appName\": \"Fake app (for testing)\"}"); 

以上単純に:

Response<String> result = 
    Rest.put(url). 
    jsonContent(). 
    body("{'appName': 'Fake app (for testing)'}").getAsString(); 
:個人的に

request.setRequestBody("{'appName': 'Fake app (for testing)'}"); 

、私はあなたがこのように使用することができ、新しいRest APIの方に引き寄せてきました

https://www.codenameone.com/blog/terse-rest-api.html

+0

ありがとうございました、私はあなたが示唆したようにレストクラスで解決しました。 '{" status ":400、" error ":" Bad Request "、" exception ":" org.springframework "というエラーが発生するため、' '{'appName':'のように一重引用符を使用することはできません。 .http.converter.HttpMessageNotReadableException "、" message ":" JSON解析エラー:予期しない文字( '' '(code 39)):フィールド名を二重引用符で囲むことを期待していました。ネストされた例外はcom.fasterxml.jackson.core.JsonParseExceptionです:予期しない文字( '' '(コード39)):二重引用符でフィールド名を開始することを期待していました} –

関連する問題