Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows store apps HttpClient post返回500个内部服务器错误_Windows Store Apps_Windows Phone 8.1_Windows 8.1 - Fatal编程技术网

Windows store apps HttpClient post返回500个内部服务器错误

Windows store apps HttpClient post返回500个内部服务器错误,windows-store-apps,windows-phone-8.1,windows-8.1,Windows Store Apps,Windows Phone 8.1,Windows 8.1,我正在Windows 8.1应用商店应用程序上使用Windows.Web.Http测试(在Windows Phone 8.1上的测试将通过此问题) 这就是我所做的: HttpMultipartFormDataContent formData=新的HttpMultipartFormDataContent(); IStorageFolder aFolder=等待StorageFolder.GetFolderFromPathAsync(imageFolder); IStorageFile aFile=

我正在Windows 8.1应用商店应用程序上使用Windows.Web.Http测试(在Windows Phone 8.1上的测试将通过此问题)

这就是我所做的:

HttpMultipartFormDataContent formData=新的HttpMultipartFormDataContent();
IStorageFolder aFolder=等待StorageFolder.GetFolderFromPathAsync(imageFolder);
IStorageFile aFile=wait aFolder.GetFileAsync(“myImage.jpg”);
IInputStream aStream=await aFile.OpenAsync(FileAccessMode.Read);
formData.Add(新的HttpStreamContent(aStream),“UploadFile”,aFile.Name);//这就是问题所在。移除此内容,并捕获好HttpStreamContent。
添加(新的HttpStringContent(“某些文本”),“某些名称”);
添加(新的HttpStringContent(“另一个文本”),“另一个名称”);
HttpClient aClient=新的HttpClient();
aClient.DefaultRequestHeaders.UserAgent.Clear();
aclient.DefaultRequestHeaders.UserAgent.ParseAdd(“Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/43.0.2357.130 Safari/537.36”);
aClient.DefaultRequestHeaders.Accept.ParseAdd(“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”);
aClient.DefaultRequestHeaders.AcceptLanguage.ParseAdd(“en-US,en;q=0.8,ms;q=0.6,id;q=0.4”);
aClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd(“gzip,deflate,sdch”);
HttpResponseMessage aResponse=新的HttpResponseMessage();
aResponse=等待aClient.PostAsync(aURI,formData);
aResponse.EnsureSuccessStatusCode();
aResponseHTML=await aResponse.Content.ReadAsStringAsync();
主机回复错误500内部服务器错误。 如果我删除文件上传,没有错误。使用主机的PHP脚本可以很好地记录数据。 我相信主机的PHP脚本部分可以很好地工作,同样的脚本可以用于HTML webform和使用MS Visual Foxpro开发的另一个应用程序

试图发送一个文件

IStorageFolder-aFolder=wait-StorageFolder.GetFolderFromPathAsync(imageFolder);
IStorageFile aFile=wait aFolder.GetFileAsync(“myImage.jpg”);
IInputStream aStream=await aFile.OpenAsync(FileAccessMode.Read);
IHttpContent aContent=新的HttpStreamContent(aStream);
aContent.Headers.ContentType=新的HttpMediaTypeHeaderValue(“图像/png”);
aContent.Headers.ContentDisposition=新的HttpContentDispositionHeaderValue(“表单数据”)
{
Name=“UploadFile”,
FileName=string.Format(“\”{0}\”,aFile.Name)//在一篇博客文章中发现该名称应在引号中,否则再次出现错误500
};
HttpRequestMessage aRequest=新的HttpRequestMessage(HttpMethod.Post,aURI);
aRequest.Content=a内容;
HttpClient aClient=新的HttpClient();
aClient.DefaultRequestHeaders.UserAgent.Clear();
aclient.DefaultRequestHeaders.UserAgent.ParseAdd(“Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/43.0.2357.130 Safari/537.36”);
aClient.DefaultRequestHeaders.Accept.ParseAdd(“text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8”);
aClient.DefaultRequestHeaders.AcceptLanguage.ParseAdd(“en-US,en;q=0.8,ms;q=0.6,id;q=0.4”);
aClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd(“gzip,deflate,sdch”);
aResponse=wait aClient.SendRequestAsync(请求);
这一次,我得到了同意。 在主机上失败。PHP$FILES数组不包含任何内容。 用于检测上载文件的PHP脚本:

if(isset($_FILES[“UploadFile”][“name”]){。。。。
多部分/表单数据 在第一个请求中,您正在发送一个
内容类型:多部分/表单数据
请求,该请求由带有标题和正文的较小部分组成。请参阅。这应适用于
$\u文件

您可以使用以下PHP脚本验证接收到的数据:

<?php
    print_r($_FILES);
?>

你有Fiddler的痕迹吗?今天是我和Fiddler在一起的第一天。我应该展示Fiddler的哪一部分?@kiewic Fiddler屏幕截图这是我使用HttpRequestMessage发送文件时的截图。另外,你能试着用
新HttpStreamContent(“foo”)替换
新HttpStreamContent(aStream)
查看流是问题还是标题?在第一个请求中,将
HttpStreamContent(aStream)
更改为
HttpStreamContent(“foo”)
。我从服务器得到了一个200 Ok,所有值在PHP代码中都可以读取。如果没有
HttpStreamContent
,第一个请求可以工作。对于第二个请求,[link]
<?php
    $myFile = @file_get_contents('php://input');
?>