我想从Windows Phone 8应用程序将表单数据发送到我的网络服务器。数据包含要上载的文件和其他一些字符串(key = value)。
文件的撰写和发送工作正常。但是,如何将我的字符串添加到发送内容?
string mServerUrl = @"http://www.myserver/reveiver.asp";
_ImageMemoryStream.Position = 0;
MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(CreateFileContent(_ImageMemoryStream, "uploadedphoto.jpg", "image/jpeg"));
HttpClient mHttpClient = new HttpClient();
HttpResponseMessage mResponse = null;
mResponse = await mHttpClient.PostAsync(mServerUrl, content);
string responseBodyAsText = await mResponse.Content.ReadAsStringAsync();
if (mResponse.StatusCode == HttpStatusCode.OK)
{
txtError.Text = "OK:" + responseBodyAsText;
}
else
{
txtError.Text = "ERROR (" + mResponse.StatusCode + "):\n" + mResponse.ReasonPhrase;
}
帮助撰写文件:
private StreamContent CreateFileContent(Stream stream, string fileName, string contentType)
{
var fileContent = new StreamContent(stream);
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "\"file\"",
FileName = "\"" + fileName + "\""
};
fileContent.Headers.ContentType = new MediaTypeHeaderValue(contentType);
return fileContent;
}
以这种方式添加我的键/值对不适合:
content.Add("key", "value");
我想添加到我的表单数据中的一些对......有什么帮助吗?
答案 0 :(得分:1)
自己动手:
content.Add(new StringContent("value_string"), "\"key_string\"");
content.Add(CreateFileContent(mStream, mFilename, "image/jpeg"));
这是有效的。记住我的帮助函数CreateFileContent
。
答案 1 :(得分:0)
试试这个:
List<KeyValuePair<string, string>> keyvaluePairs = new List<KeyValuePair<string,string>>();
KeyValuePair<string, string> keyvalue = new KeyValuePair<string, string>("key", "value");
keyvaluePairs.Add(keyvalue);
MultipartFormDataContent content = new MultipartFormDataContent();
content.Add(new FormUrlEncodedContent(keyvaluePairs));
Haven自己测试了这个(使用Multipart),但是使用FormUrlEncodedContent
它对我来说很好。