2016-07-05 5 views
1

クライアント側のアプリケーションにはXamarinとMobileServices SDK、.NetバックエンドはAzureを使用しています。 私はApiControllerを実装しました.GET cal troughをsdkにするとデータを正常に取得できます。ここで がゲットコード:AzureメソッドはトラフAzureMobileServices SDKを投稿しようとしていません

public async Task<UserData> Post(string ownerId) 
    { 
     UserData newData = new UserData(); 
     newData.ownerId = ownerId; 
     var success = false; 
     ..shortened... 
     return success; 
    } 

を、私は成功したポストマンを経て、それを呼び出すことができますが、SDKは私にこのエラーがスローされます:

public async Task<UserData> Get() 
    { 
     UserData newData = new UserData(); 
     newData.name = "null"; 
     ..shortened.. 
     return newData; 
    } 

私もPOSTメソッドを実装し

Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException: The request could not be completed. (Method Not Allowed)

ここにクライアント側コードがあります。 GETコール:

var result = await client.InvokeApiAsync<UserData>("userData",System.Net.Http.HttpMethod.Get, null); 

POSTコール

var result = await client.InvokeApiAsync<UserData, bool>("userData", ownerId, System.Net.Http.HttpMethod.Post, null); 

任意のアイデア?

+0

失敗したリクエストの単純なコードとフィドラー出力を投稿できますか? –

+0

私はバックエンドとクライアントのコードを追加しました – Tom

答えて

0

郵便番号でSDKを正常に呼び出すことができる場合は、InvokeApiAsyncコールで問題が発生している必要があります。次のいずれかの方法でクライアントのHTTPリクエストをログに記録することができます

また、APIコントローラクラスで[MobileAppController]属性を使用していることを確認してください。 How to: Define a custom API controllerを参照してください。

+0

ありがとう、私はどのようにLoggingHandlerを実装しました。私はpostmanを介して投稿要求を行うときに、パラメータの名前がバックエンドメソッドの入力名と一致しなければならないことがわかりました。リクエストを確認すると、「Request:POST https://api.near.lu/api/userData passedValue'が表示されます。どのようにパラメータを呼び出すかを指定できますか? – Tom

+0

JSONペイロードが必要な場合は、JObjectを作成して値を割り当てる必要があります。例えば。 'JObject o = JObject.FromObject(新しいfieldName = ownerId)'。 http://www.newtonsoft.com/json/help/html/CreatingLINQtoJSON.htmを参照してください。 –

+0

私はそれが必要なのかどうかわかりません、私はそれを働かせたいですか?パラメタを受け入れるPostメソッドを実装する一般的な手順は何ですか?あるいは、上記の私の例で何が間違っていますか? – Tom