我开发了 web api,它使用 POST 方法接受文件,进行操作并使用 HTTP 响应返回它们。Web api 在 http 标头中返回附加数据,例如输出文件名。问题是,然后我使用 HttpWebResponse 发布和接收响应我在响应标头值中得到了乱码文件名,并且 unicode 字符丢失了。
例如,如果我提交наталья.docx
文件,我会得到наÑалÑÑ.pdf
.
完整的响应标头
Pragma: no-cache
Transfer-Encoding: chunked
Access-Control-Allow-Origin: *
Result: True
StoreFile: false
Timeout: 300
OutputFileName: наÑалÑÑ.pdf
Content-Disposition: attachment; filename=наÑалÑÑ.pdf
Cache-Control: no-cache, no-store
Content-Type: application/pdf
Date: Wed, 12 Sep 2012 07:21:37 GMT
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4
我正在阅读这样的标题值
HttpWebResponse webResponse = FormUpload.MultipartFormDataPost(postdatatoserver);
using (Stream clientResponse = webResponse.GetResponseStream())
if (webResponse.StatusCode == HttpStatusCode.OK)
{
Helpers.CopyStream(clientResponse, outStream);
webHeaderCollection = webResponse.Headers;
}
我不确定当我从响应标头中读取加扰字符时是否应该将它们解码为 unicode,或者当我从 Web api 服务器发送数据时我可能需要将编码包含到响应标头中?