使用C#在Windows 8 metro应用程序上发送POST请求

本文关键字:程序上 POST 请求 应用程序 应用 Windows metro 使用 | 更新日期: 2023-09-27 17:59:31

我试着用C#发出一个POST请求很长一段时间,但它始终不起作用
来自服务器的statusCode是200,所以它似乎可以工作,但我得到的响应是"AccessDenied"。HTTP标头似乎是错误
在JS上发出的POST请求效果很好,但在C#上没有
以下是请求:

string resourceAddress = " ... ";
try
{
     HttpClient httpClient = new HttpClient();  
     var content = new List<KeyValuePair <string,string>>
     {
       new KeyValuePair<string,string>(" ... "," ... "),
         ...
     };
     HttpResponseMessage response = await httpClient.PostAsync(resourceAddress, new FormUrlEncodedContent(content));
     response.EnsureSuccessStatusCode();
     var responseString = await response.Content.ReadAsStringAsync(); 
}
catch (HttpRequestException hre)   
{
      Debug.WriteLine(hre.ToString());
}
catch (Exception ex)   
{
      Debug.WriteLine(ex.ToString());
}

我错过什么了吗
带有C#请求的Windows8是否修改或添加了一些内容到标题中?

在安卓系统上,我使用以下代码:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(urlWebSiteHTTPRequest);
try
{           
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("... ","... "));
    ....
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    response = httpclient.execute(httppost);
    entity = response.getEntity();
    responseText = EntityUtils.toString(entity);
}   
catch (ClientProtocolException e) 
{
    // TODO Auto-generated catch block
} 
catch (IOException e) 
{
    // TODO Auto-generated catch block
}

使用C#在Windows 8 metro应用程序上发送POST请求

我认为标头的格式不正确。尝试使用这个简单的工具。您将能够使用它来调试http请求消息,并实际查看服务器发回的数据和错误。http://www.telerik.com/fiddler.转到composer选项卡以测试请求消息。还要确保您的授权用户名:密码是base64编码的。在大多数情况下,这似乎总是一个问题。

祝你好运。