【问题标题】:Post Json string to Web Api Windows Store 8.1将 Json 字符串发布到 Web Api Windows Store 8.1
【发布时间】:2014-08-07 13:27:40
【问题描述】:

由于 webClient 已弃用且 SharpRest 不适用于 Windows 8.1,我需要将我的 json 字符串传递给 web api。

字符串 js =@"[{""userName"":""jerin"",""userId"":""a""}]";

var baseAddress="http://epub3.in/sample/android%20webservice/webservice/insertuser.php/";

        HttpClient httpClient = new HttpClient();
         HttpClient httpClient = new HttpClient();
        httpClient.BaseAddress = new Uri(baseAddress);
        httpClient.DefaultRequestHeaders.Accept.Clear();
        httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        try
        {
            HttpResponseMessage response =  httpClient.PostAsync("",
                new StringContent(
                    js,
                    Encoding.UTF8,
                    "application/json")).Result;
              string sd = response.IsSuccessStatusCode.ToString();}

现在这里的 baseaddress 是一个带有 url 地址的字符串。但即使我将 IsSuccessStatusCode 设为 true,也没有输入 json。
我应该在这个 link
中看到输入的结果 Android 团队正在发布他们的参数值在哪里

usersJSON=[{"userName":"jerin","userId":"3"}]

根据@Jon 的回答,我编辑了我的代码,而不是 os System.Net.Http 我现在使用的是 Windows.Web.http,但它仍然没有上传

        Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient();
        Windows.Web.Http.HttpRequestMessage msg = new Windows.Web.Http.HttpRequestMessage(new Windows.Web.Http.HttpMethod("POST"), new Uri(baseAddress));
        msg.Content = new HttpStringContent((js));
        msg.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
        Windows.Web.Http.HttpResponseMessage response = await httpClient.SendRequestAsync(msg).AsTask();

【问题讨论】:

    标签: c# json asp.net-web-api windows-store-apps


    【解决方案1】:

    尝试使用 Windows.Web.Http 命名空间中的 HttpClient:

                HttpClient httpClient = new HttpClient();
                HttpRequestMessage msg = new HttpRequestMessage(new HttpMethod("POST"), new Uri(baseAddress));
                msg.Content = new HttpStringContent(js);
                msg.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
                HttpResponseMessage response = await _httpClient.SendRequestAsync(msg).AsTask();
    

    【讨论】:

    • 我已经更新了我的问题。我之前的代码正在编译,感谢您提醒我应该使用 Windows.Web.Http 而不是 System.Web.Http。你能帮我发帖吗,因为我还不能发帖。
    • 您做得对,json 看起来还不错(包含一项的数组),所以它必须是服务器。确保它期待一个 POST 调用而不期待任何其他标头。
    • 在 android 应用程序中成功发布,但在 Windows 应用程序中没有。它与一开始添加的 usersJSON= 有什么关系吗?在 Android 代码中 params.put("usersJSON", controller.composeJSONfromSQLite()); 所以我认为那是导致错误的原因我怎么能把 userJSON= 也放。
    • 如果您还没有'Fiddler',请安装它并使用它来测试请求。在“作曲家”选项卡中,您可以创建 POST 请求并尝试不同的 json 字符串。
    • Ty 向我介绍了 Fiddler。是的,我认为它不是我的代码的网络 API 问题。
    猜你喜欢
    • 2016-08-02
    • 1970-01-01
    • 2017-09-10
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    相关资源
    最近更新 更多