senden byte-array per HTTP-POST-in-Shop-app

Ich versuche zu senden, einige Bilder + ein paar meta-Daten zu einem server über HTTP-post, die von einer windows store-app aber nicht weiterkommen, wenn Sie versuchen, um tatsächlich die Daten enthalten, die in der post. Es kann nicht getan werden, die Art und Weise würden Sie dies in einer windows forms-Anwendung oder ähnliches aufgrund der änderungen die store-app-API.

Bekomme ich die Fehlermeldung.

cannot convert source type byte[] to target type System.Net.Http.httpContent

nun, dies ist offensichtlich, weil es 2 verschiedene Typen, die nicht implizit gecastet, aber es ist im Grunde das, was ich Suche, um in der Lage zu tun. Wie mache ich bekomme mein byte-array-Daten in dem httpContent-Typ, so kann ich es im folgenden nennen

httpClient.PostAsync(Uri uri,HttpContent content);

hier meine volle upload-Methode:

async private Task UploadPhotos(List<Photo> photoCollection, string recipient, string format)
    {
        PhotoDataGroupDTO photoGroupDTO = PhotoSessionMapper.Map(photoCollection);

        try
        {
            var client = new HttpClient();
            client.MaxResponseContentBufferSize = 256000;
            client.DefaultRequestHeaders.Add("Upload", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");

            //POST action_begin
            const string actionBeginUri = "http://localhost:51139/PhotoService.axd?action=Begin";
            HttpResponseMessage response = await client.GetAsync(actionBeginUri);
            response.EnsureSuccessStatusCode();
            string responseBodyAsText = await response.Content.ReadAsStringAsync();
            string id = responseBodyAsText;
            ////

            //POST action_upload
            Uri actionUploadUri = new Uri("http://localhost:51139/PhotoService.axd?action=Upload&brand={0}&id={1}&name={2}.jpg");

            var metaData = new Dictionary<string, string>()
            {
                {"Id", id},
                {"Brand", "M3rror"}, //TODO: Denne tekst skal komme fra en konfigurationsfil.
                {"Format", format},
                {"Recipient", recipient}
            };

            string stringData = "";
            foreach (string key in metaData.Keys)
            {
                string value;
                metaData.TryGetValue(key, out value);
                stringData += key + "=" + value + ",";
            }

            UTF8Encoding encoding = new UTF8Encoding();
            byte[] byteData = encoding.GetBytes(stringData);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, actionUploadUri);

            //send meta data
            //TODO get byte data in as content
            HttpContent metaDataContent = byteData;
            HttpResponseMessage actionUploadResponse = await client.PostAsync(actionUploadUri, metaDataContent);

            actionUploadResponse.EnsureSuccessStatusCode();
            responseBodyAsText = await actionUploadResponse.Content.ReadAsStringAsync();

            //send photos
            //TODO get byte data in as content
            foreach (byte[] imageData in photoGroupDTO.PhotosData)
            {
                HttpContent imageContent = imageData;
                actionUploadResponse = await client.PostAsync(actionUploadUri, imageContent);
                actionUploadResponse.EnsureSuccessStatusCode();
                responseBodyAsText = await actionUploadResponse.Content.ReadAsStringAsync();
            }                
            ////

            //POST action_complete
            const string actionCompleteUri = "http://localhost:51139/PhotoService.axd?action=Complete";
            HttpResponseMessage actionCompleteResponse = await client.GetAsync(actionCompleteUri);
            actionCompleteResponse.EnsureSuccessStatusCode();
            responseBodyAsText = await actionCompleteResponse.Content.ReadAsStringAsync();
            ////
        }

        catch (HttpRequestException e)
        {
        }
        catch (Exception e)
        {
            Debug.WriteLine(e.ToString());
        }
    }
Nicht die binären Daten müssen serialisierte? Auch du möchtest vermutlich stream es eher als, laden Sie Sie alle auf einmal. stackoverflow.com/questions/19005991/... kann helfen.

InformationsquelleAutor Essah | 2014-05-07

Schreibe einen Kommentar