【发布时间】:2013-12-03 14:44:32
【问题描述】:
我正在尝试将 Windows C# 库迁移到 Windows Phone 8,我不得不对库从在线 URI 获取数据的方式进行一些更改。
我正在使用 BCL 的 HttpClient 执行我的数据检索,现在一切正常。
该库还需要上传功能,我找不到使用HttpClient 的方法。
代码如下:
// Client setup
var httpclient = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, string.Format(SubmitURI, value));
// Add the headers
request.Headers.Add("header", header);
var postData = GetPostData();
var data = Encoding.UTF8.GetBytes(postData);
// Side question -> Content is null here!
request.Content.Headers.Add("ContentType", "multipart/form-data; boundary=" + Boundary);
// BEGIN ORIGINAL CODE
var stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
stream.Close();
// END ORIGINAL CODE
// Get response
var response = await httpclient.SendAsync(request);
var responseContent = new StreamReader(await response.Content.ReadAsStreamAsync()).ReadToEnd();
BEGIN ORIGINAL CODE 和 END ORIGINAL CODE cmets 之间有我无法迁移的代码,以便您了解它的作用和我可能需要让它在 WP 上工作。
其他的代码已经在WP上工作了,除了
request.Content.Headers.Add("ContentType", "multipart/form-data; boundary=" + Boundary);
因为,由于某些原因,request.Content 为 null。
所以我的问题是:如何使用HttpClient(或任何更好的方法)将这 3 行迁移到 WP?
还有一个小问题,为什么request.Content 为空?
编辑:根据@Johan van der Slikke 的回答,我编辑了我的代码。编译成功了,但是服务器报告没有上传文件,所以我猜还是有一些问题。
var stream = new MemoryStream(data);
var streamContent = new StreamContent(stream);
request.Content = streamContent;
request.Content.Headers.Add("ContentType", "multipart/form-data; boundary=" + Boundary);
// Get response
var response = await httpclient.SendAsync(request);
【问题讨论】:
标签: c# file-upload windows-phone-8 httprequest dotnet-httpclient