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
似乎略有不同。
根据 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、响应..等)
我必须使用
中的 HttpClientSystem.Net.Http
命名空间,以便能够对 Windows 10 IoT API.
进行探测器 REST 调用 中的HttpClientWindows.Web.Http.HttpClient
似乎略有不同。