0

IBM Mobile First PlatFormバージョン7.1の使用次のコードを使用して、iOSアプリケーションからJavaアダプタをコールしようとしています。IBM MobileFirst iOS SDKからJavaアダプタへのJSON本体の送信

[[WLResourceRequest requestWithURL:url method:WLHttpMethodPost] sendWithJSON:@{@"one":@"two"} completionHandler:^(WLResponse *response, NSError *error) { 

    NSLog(@"%@",response); 
    NSLog(@"%@",error); 

    }]; 

アダプタ側のJavaメソッドは以下のようになります。

@POST 
@Consumes("application/json") 
@Produces("application/json") 
public String hello(JSONObject body){ 
    return body.toString(); 
} 

しかし、私は

2016年4月20日11応答でエラーが続いてます:31:15.520 MBS-コール[15092:3787968]エラードメイン= com.alamofire.error.serialization.responseコード= -1011 "要求が失敗しました:サポートされていないメディアタイプ(415)" UserInfo = {com.alamofire.serialization.response.error.response = {URL:http:/0.0.0.0:10080/mbs-api/adapters/basicadpt /ユーザー} {ステータスコード:415、ヘッダー{ 接続=閉じる; "Content-Language" = "en-US"; "Content-Length" = 0; 日付= "水曜日、2014年4月20日02:31:15 GMT"; "X-Powered-By" = "Servlet/3.0"; }}、NSErrorFailingURLKey = http://0.0.0.0:10080/mbs-api/adapters/basicadpt/users、com.alamofire.serialization.response.error.data = <>、NSLocalizedDescription =要求が失敗しました:(415)}

サポートされていないメディアタイプをそして、iOS SDKには、それが追加されますようです任意のメソッドが呼び出されると、ヘッダapplication/x-www-url-form-urlencodedが要求されます。

次の2つの質問があります。

  1. JSON BodyをJavaアダプタに渡すにはどうすればいいですか?
  2. の動作sendWithJSONの動作は、iOSとAndroidで異なります。 Androidでは、アダプタを呼び出すときにapplication/jsonヘッダを追加するようです。それはバグか行動の一部ですか?

答えて

1

これはバグだと思う。私はsendWithJSONを使用すると、コンテンツタイプがapplication/jsonであると自動的に判断するはずです。

経験を向上させるために、サポートリクエスト(PMR)を開くことをお勧めします。一方

は、私は簡単な回避策が見つかりました:

[request addHeaderValue:@"application/json" forName:@"Content-Type"] 

またはスウィフトに:

request.addHeaderValue("application/json", forName: "Content-Type") 
0

私は、アプリケーションのコルドバのバージョンと、この同じ問題がありました。

var userIDTag = 'some_string'; 
var subTag = [userIDTag]; //<- this worked 
var subTag = userIDTag; //<- this failed with the above error 
var subTag = '[\'' + some_string + '\']'; //<- this also failed with the above error 

以下は、私がコルドバアプリケーションのためにやったことです。

function subscribeByTag(userIDTag) { 
    var subTag = [userIDTag]; 
    console.log("subTag: " + subTag); 
    WLAuthorizationManager.obtainAccessToken("push.mobileclient").then(
     MFPPush.subscribe(
      subTag, 
      function(subTag) { 
       navigator.notification.alert("Subscribed successfully"); 
      }, 
      function(failureResponse){ 
       navigator.notification.alert("Failed to subscribe"); 
       console.log("Failedtosubscribe:" + JSON.stringify(failureResponse)); 
      } 
     ) 
    ); 
} 
関連する問題