0

我正在尝试向我在 Google App Engine 上创建的后端 API 发出请求。现在它应该很简单,它发送 URL,返回的应该是 JSON,看起来像这样 {"keys": [5676073085829120]}。我通过发出 CURL 请求测试了 API,并且 URL 有效,让我感到困惑的一件事是,当我发出 CURL 请求时,我必须指定“Accept: application/json”,但我不知道如何添加到 getAsync 请求。这是有问题的代码:

function verify(){
    var uname = document.getElementById("username").value;
    var pword = document.getElementById("password").value;

    var c = new Windows.Web.Http.HttpClient();
    var complete = "http://golden-bonsai-124817.appspot.com/users/" + uname + "/" + pword;

    c.getAsync(new Windows.Foundation.Uri(complete)).done(function (result) {
    var jsonResult = JSON.parse(result.content.toString());
    var key = jsonResult.Results.series[0].data;
    console.log("in here");
    var authKey = new Array();
    key.forEach(function (cur, i, arr) {
        authKey.push(cur.keys);
    });
};

我尝试使用 Visual Studio 中的调试器单步执行代码。它初始化变量,我的“完整”变量的值是我用于 cURL 请求的正确 URL。我在函数内部设置了一个断点,该断点应该在请求完成后发生,但是代码永远不会在该函数内部进行,最终 Windows Phone 模拟器变黑了,看起来它只是挂起,它没有退出但是它达到了我无法再通过的地步。我一直在尝试,但我就是想不通,更糟糕的是,所有这些东西的文档都是垃圾。任何帮助将不胜感激。提前致谢。

4

1 回答 1

0

这需要在请求的内容中指定。要指定请求的内容类型,您需要使用HttpRequestMessage创建请求,然后指定媒体类型。然后您需要使用sendRequestAsync方法HttpClient来处理您的请求。因此,您的代码将类似于以下内容。

var hc = new Windows.Web.Http.HttpClient();
var uri = new Windows.Foundation.Uri("http://golden-bonsai-124817.appspot.com/users/" + uname + "/" + pword);
var request = new Windows.Web.Http.HttpRequestMessage(Windows.Web.Http.HttpMethod.get, uri);
var content = "";
var encoding = Windows.Storage.Streams.UnicodeEncoding.utf8;
var mediaType = "application/json";
request.content = new Windows.Web.Http.HttpStringContent(content, encoding, mediaType);
hc.sendRequestAsync(request).then(...);
于 2016-04-03T02:44:07.450 回答