根据Windows 10 IoT REST接口的文档,可以通过REST API部署应用程序。
/ api / appx / packagemanager / package
上传并安装.appx文件。
HTTP动词:POST
参量
package:要安装的软件包的文件名。
有效载荷
多部分符合http正文
如何正确组装有效载荷?我想部署一个本地.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设备上运行。
岗位行动
HttpResponseMessage response = await client.PostAsync(url, multipart);
给我以下回应
{"Reason" : "Missing appx file name query parameter"} BadRequest
我猜PostAsync调用的内容必须是具有其他参数/信息的MultipartContent类型。任何想法如何解决这个问题?
最佳答案
浏览器(Chrome,IE)F12模式-开发人员工具/网络-使用浏览器(minwinpc:8080)上传appx文件。查看POST的样子。 (标题,响应等。)