UWP的文件POST传输失败

时间:2016-12-06 05:43:30

标签: c# php .net visual-studio uwp

故障

我想将UWP应用程序(C#)中的值和文件POST发送到用PHP创建的API,但似乎无法发送该文件。

  • param1是StringValue。
  • param2是UploadFile。

摘录sample.php

if($_FILES['param2'])

UWP(失败。$ _FILES [' param2'] false)

private async Task PostSample()
{
    const string POST_URL = "http://xxx.xxx.xxx.xxx/api/sample.php";

    var multi = new HttpMultipartFormDataContent();

    var param1 = new HttpStringContent("foo");
    multi.Add(param1, "param1");

    byte[] values = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
    var param2 = new HttpStreamContent(new MemoryStream(values).AsInputStream());
    param2.Headers.ContentDisposition = new Windows.Web.Http.Headers.HttpContentDispositionHeaderValue("form-data")
    {
        Name = "param2",
        FileName = "piyo.dat"
    };
    multi.Add(param2);

    var client = new HttpClient();
    var res = await client.PostAsync(new Uri(POST_URL), multi);

    var diag = new MessageDialog(res.ToString());
    await diag.ShowAsync();
}

我尝试了什么

外部工具

在GoogleChrome的高级REST客户端中,它成功了

Windows窗体(成功)

在Windows Forms上成功。

private async Task PostSample()
{
    const string POST_URL = "http://xxx.xxx.xxx.xxx/api/sample.php";

    var multi = new MultipartFormDataContent();

    var param1 = new StringContent("foo");
    multi.Add(param1, "param1");

    byte[] values = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
    var param2 = new StreamContent(new MemoryStream(values));
    param2.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
    {
        Name = "param2",
        FileName = "piyo.dat"
    };
    multi.Add(param2);

    var client = new HttpClient();
    var res = await client.PostAsync(POST_URL, multi);
    MessageBox.Show(res.ToString());
}

猜测

我的UWP代码是否不正确或无法在UWP上发送?

谢谢。

0 个答案:

没有答案