Windows 10 个 IoT - REST API 部署

Windows 10 IoT - REST API deployment

根据 Windows 10 IoT REST 接口的文档,可以通过 REST API.

部署应用程序

/api/appx/packagemanager/package

Uploads and installs an .appx file.

HTTP verb: POST

Parameters

package : File name of the package to be installed.

Payload

multi-part conforming http body

如何 assemble 正确地加载负载?我想部署一个本地.appx包,我试过这样:

        Windows.Storage.StorageFolder storageFolder =
        Windows.Storage.ApplicationData.Current.LocalFolder;

        byte[] filecontent = null;
        string p = storageFolder.Path;
        filecontent = File.ReadAllBytes(p + "\TestAppDeploy_1.0.1.0_ARM.appx");


        //URL + parameter Base64 encoding
        string filenameb64 = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("TestAppDeploy_1.0.1.0_ARM.appx"));
        string url = "http://localhost:8080/api/appx/packagemanager/package?package="+filenameb64;

        HttpClient client = new HttpClient();

        //authentication
        var byteArray = Encoding.ASCII.GetBytes("Administrator:password");
        client.DefaultRequestHeaders.Authorization = new  System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

        var multipart = new MultipartContent();
        ByteArrayContent byteArrayContent = new ByteArrayContent(filecontent);

        multipart.Add(byteArrayContent);

            HttpResponseMessage response = await client.PostAsync(url, multipart);

            string res = await response.Content.ReadAsStringAsync();
            var status = response.StatusCode;

            client.Dispose();

            Debug.WriteLine(res + "    " + status);

Windows 10 IoT 设备上的代码是 运行。

post动作

         HttpResponseMessage response = await client.PostAsync(url, multipart);

给我以下回复

         {"Reason" : "Missing appx file name query parameter"}    BadRequest

我猜 PostAsync 调用的内容必须是一种带有附加 parameter/information 的 MultipartContent 类型。知道如何解决这个问题吗?

浏览器(Chrome,IE)F12 模式 - 开发者工具/网络 - 使用浏览器上传 appx 文件(minwinpc:8080)。看看那里 POST 的样子。 (Headers、响应..等)

我必须使用

中的 HttpClient

System.Net.Http

命名空间,以便能够对 Windows 10 IoT API.

进行探测器 REST 调用

中的HttpClient

Windows.Web.Http.HttpClient

似乎略有不同。