Azure Easy Apis InvokeApi方法调用GET而不是POST

时间:2017-09-08 04:49:25

标签: android azure xamarin.android azure-api-apps

我目前正致力于使用Azure为Xamarin.Android应用创建自定义身份验证。我已成功创建了API,并且在使用Advanced REST Client提交原始有效负载时正确返回值。

我现在正尝试使用Azure的MobileServiceClient SDK在Xamarin.Android上实现此功能,并且在我的代码中使用如下所示的invokeApi方法时,我收到一个异常,表明它正在调用GET而不是POST。有人知道我可能做错了吗?

ex.Message返回

“无法GET / api / register?username = azureAccountTest& password = testingpassword”

const test = 'apple iphone'

const term = 'iphone 5'

// Split by whitespace
const terms = term.split(/\s/)

// Test all sub term
const result = terms.reduce(function(previousValue, currentValue) {
  if (test.search(currentValue) > -1) previousValue.push(currentValue)
  return previousValue
}, [])

console.log(result.length > 0)

1 个答案:

答案 0 :(得分:0)

根据您的描述,我在本地测试了此问题,我可以按如下方式检索authenticationToken

enter image description here

您对InvokeApiAsync使用了以下方法:

public Task<JToken> InvokeApiAsync(string apiName, HttpMethod method, IDictionary<string, string> parameters, CancellationToken cancellationToken = default(CancellationToken));

注意:它总结了附加数据将通过查询字符串发送。

根据我的理解,您可以参考以下方法通过HTTP内容发送其他数据,如下所示:

JObject user = new JObject();
user.Add("username", "bruce");
user.Add("password", "123456");
var result = await App.MobileService.InvokeApiAsync("/.auth/login/custom", HttpMethod.Post, user, ct);

此外,在部署到azure端时,您需要使用https端点来指定mobileAppUri。这是一个类似的问题,您可以参考here。此外,我建议你参考adrian hall的关于Custom Authentication的书。

<强>更新

根据您的评论,我检查了自定义身份验证,并在adrian hall的书中找到了关于Custom Authentication的以下说明:

  

您必须在应用服务中启用身份验证/授权。将请求未经过身份验证的操作设置为允许请求(无操作)不配置任何支持的身份验证提供程序。< / p>