2

Gemäß der Dokumentation der Windows 10 IoT-REST-Schnittstelle ist es möglich, Apps über die REST-API bereitzustellen.Windows 10 IoT - REST-API-Bereitstellung

/api/appx/Paketmanager/Paket

Uploads und installiert eine .appx Datei.

HTTP-Verb: POST

Parameter

Paket: Dateiname des Pakets installiert werden.

Payload

mehrteiliger konforme http Körper

Wie montieren wir die Nutzlast korrekt? Ich möchte ein lokales .appx Paket bereitstellen, versuchte ich es auf diese Weise:

 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); 

Der Code auf dem Windows 10 IoT-Gerät läuft.

Der Beitrag Aktion

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

gibt mir die folgende Antwort

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

ich den Inhalt des PostAsync Anruf erraten eine Art von MultipartContent mit zusätzlichen Parameter/Informationen sein müssen. Irgendeine Idee, wie man das löst?

Antwort

0

Ich habe die Httpclient verwenden, in der

System.Net.Http

Namespace, in der Lage sein Prober REST Anrufe an das machen Windows 10 IoT-API.

Die Httpclient im

Windows.Web.Http.HttpClient

scheint etwas anders zu sein.

0

Browser (Chrome, IE) F12-Modus - Entwicklertools/Netzwerk - Hochladen der Appx-Datei über den Browser (minwinpc: 8080). Sehen Sie, wie POST aussieht. (Header Antwort .. etc.)

Verwandte Themen