gpt4 book ai didi

c# - 在 Windows 8 上发送帖子数据

转载 作者:行者123 更新时间:2023-11-30 18:37:47 27 4
gpt4 key购买 nike

我正在尝试将发布数据 (json) 发送到网络服务器。这是非常基本的事情,但在 Windows 8 API 中,一切都必须很复杂:/Microsoft 提供的示例根本不起作用 http://code.msdn.microsoft.com/windowsapps/HttpClient-sample-55700664/sourcecode?fileId=50955&pathId=797575364场景 5 - 它正在向服务器发送一些内容,但没有应该发送的内容(也许当我将字符串转换为流时出现一些问题......)

            byte[] byteArray = Encoding.Unicode.GetBytes( data );
MemoryStream stream = new MemoryStream( byteArray );
StreamContent streamContent = new StreamContent(stream);

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = streamContent;
request.Headers.TransferEncodingChunked = true;
var httpClient = new HttpClient();

HttpResponseMessage response = await httpClient.SendAsync(request);

string responseString = await response.Content.ReadAsStringAsync();

但我想到了另一个想法并且这个解决方案有效(但是......)

            var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";

using (var requestStream = await request.GetRequestStreamAsync())
{
var writer = new StreamWriter(requestStream);
writer.Write(data);
writer.Flush();
}

using (var response = await request.GetResponseAsync())
{
using (var responseStream = response.GetResponseStream())
{
var reader = new StreamReader(responseStream);
var answer = reader.ReadToEnd();
return answer;
}
}

正如我之前所说,这个解决方案有很大的缺点 - 服务器响应可能有 http 代码 422,然后应用程序立即崩溃。如何使用第二种解决方案检查 http 响应代码? (我不确定这是否可能,因为它在 request.GetResponseAsync 上崩溃)

提前致谢:)

最佳答案

用 try-catch block 包裹代码的主体,并处理错误调用的 WebExceptionWebException.Status 包含请求失败原因的状态代码。

var request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "application/json";
request.Method = "POST";
try {
// Your code
}
catch (WebException)
{ //error handling
}

关于c# - 在 Windows 8 上发送帖子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12206055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com