[英]Unable to post data through HttpClient PostAsync
我正在使用HttpClient使用post通過C#控制台應用程序將數據發送到服務器。 HttpClient PostAsync無法通過字典對象發布我嘗試以各種格式發送的數據,即字符串內容,二進制內容,流內容,http內容,但是該內容為null,服務器返回請求無效異常,這是我的代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Windows;
using System.Windows.Input;
using System.IO;
using System.Web;
namespace ConsoleApplication1
{
class Program
{
string str = ""; int j = 0;
static void Main(string[] args)
{
Program df = new Program();
df.Started();
}
public async void Started()
{
string contentLength="0";
try
{
contentLength = await AccessTheWebAsync();
}
catch (Exception e)
{
}
Console.WriteLine(contentLength);
}
async Task<string> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
string token = "qwerty1234";
string test = "1";
string postrequest = "<?xml version='1.0' encoding='UTF-8'?>" +
"<request> " +
"<rec>asdf1234</rec> " +
" <lid>9876</lid> " +
"</request> ";
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("token", token);
dict.Add("test", test);
dict.Add("request", postrequest);
HttpContent content = new FormUrlEncodedContent(dict);
Uri url = new Uri("http://example.com/");
Task<HttpResponseMessage> getStringTask = client.PostAsync(url, content);
HttpResponseMessage httpmesssage = await getStringTask;
Stream respons = await httpmesssage.Content.ReadAsStreamAsync();
StreamReader sr = new StreamReader(respons);
string response = sr.ReadToEnd();
return response;
}
}
}
提前致謝
在Console應用程序中,您需要使用Task.Wait
, Console.ReadKey
或類似方法等待操作完成。 另外,避免async void
:
static void Main(string[] args)
{
Program df = new Program();
df.StartedAsync().Wait();
}
public async Task StartedAsync()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.