Ersetzen von Windows Photo-Foto-Upload
-
14-11-2019 - |
Frage
Ich versuche, ein Foto in eine REST-API in einer Windows Phone 7-Anwendung mithilfe von RESTSHARP für meine Get / Posts hochzuladen.
Die Postparameter sind wie folgt:
foto : Das Foto, das als Multipart / Form-Daten verschlüsselt ist
photo_album_id : Bezeichner eines vorhandenen Fotoalbums, das ein Ereignis oder eine Gruppe sein kann Album Ich habe meine Anfrage erstellt, aber jedes Mal bekomme ich den generationspflichtigen
"{\"details\":\"missing photo parameter\",\"problem\":\"The API request is malformed\"}\n
Mein Foto-Parameter sieht so aus:
"----------------------------- 8cd9bfbafb3ca00 \ r \ ncontent-disposition: formsdaten; Name= \" Dateiname \ " ; Dateiname=\ "Somefile.jpg \" \ r \ ncontent-type: image / jpg \ r \n\ r \n(einiger binärer Junk hier aufgeführt) \ r \n------------- -------------------- 8cd9bfbafb3ca00 - "
Ich bin mir nicht ganz sicher, ob es sich um ein Problem darin handelt, wie ich die binären Daten für das Image darstellende (derzeit in meinem phototaskupplettierten Ereignis, habe ich den Inhalt von E.ChosenPhoto in ein Byte [] gelesen und das an einen weitergeben Helper-Methode zum Erstellen der Formatendaten) oder wenn ich das Formular einfach nicht richtig erstellen kann.
Ich versuche nur, dies einfach wie möglich zu tun, dann kann ich den Refaktor, sobald ich weiß, wie alles funktioniert. generasacodicetagpre.
Lösung
Hammock for Windows Phone makes this real simple.
You just add the file to the request using the AddFile
method and pass it the photo stream.
var request = new RestRequest("photo", WebMethod.Post);
request.AddParameter("photo_album_id", _album.album_id);
request.AddFile("photo", filename, e.ChosenPhoto);
Andere Tipps
Hum are you sure that your PostForm is correct ? The content-* params should be set in the headers of your POST and not in the body ?
var request = (HttpWebRequest)WebRequest.Create(url);
request.Headers.Add(HttpRequestHeader.Authorization,"blabla");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";