2017-10-14 3 views
0

Ich möchte eine Anzeige auf olx.ba mit HttpWebRequest. Um eine Anzeige zu posten, musste ich mich zuerst anmelden. Daher nahm ich die Cookies aus dieser Anfrage und übermittelte sie an die Anfrage, die die Anzeige posten sollte. Bis jetzt wurde die Anzeige korrekt hochgeladen, aber die Anzeige enthält keine Bilder.Httpwebrequest Text und Bilder hochladen

public void PostProduct(Account account, Product product) 
    { 
     // Get login cookies 
     CookieCollection cookieCollection = GetLoginCookies(account); 

     request = InitializeRequest(request, "https://www.olx.ba/objava/zavrsi"); 

     // Set the login cookies 
     foreach (Cookie c in response.Cookies) 
     { 
      request.CookieContainer.Add(c); 
     } 

     postData = Encoding.ASCII.GetBytes(UrlHelpers.ToQueryString(product)); 
     request.ContentLength = postData.Length; 

     using (var stream = request.GetRequestStream()) 
     { 
      stream.Write(postData, 0, postData.Length); 
     } 

     response = (HttpWebResponse)request.GetResponse(); 

     // responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
    } 

Die Website hat eine Form die Bilder für das Hochladen und wenn ich ein Bild auswählen, die Anforderung von dieser Form gemacht dies zu laden:

Anfrage Header

POST /objava/upload?s=RBDQpWEcUu HTTP/1.1 
Host: www.olx.ba 
Connection: keep-alive 
Content-Length: 283041 
Pragma: no-cache 
Cache-Control: no-cache 
Origin: https://www.olx.ba 
X-File-Name: 2.jpg 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
Content-Type: multipart/form-data; boundary=---WebKitFormBoundaryAczld5sbjrh0FX5q 
Accept: application/json 
X-Requested-With: XMLHttpRequest 
Referer: https://www.olx.ba/objava 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.8,ro;q=0.6,de;q=0.4 
Cookie: xxxxx 

anfordern Nutzlast

------WebKitFormBoundaryAczld5sbjrh0FX5q 
Content-Disposition: form-data; name="myfile"; filename="2.jpg" 
Content-Type: image/jpeg 


------WebKitFormBoundaryAczld5sbjrh0FX5q-- 

Ich denke, das Upload-Formular ist von dropzone.js, wenn das in irgendeiner Weise hilft. Wie kann ich das schaffen?

Antwort

1

Vor dem Laden von Bildern als Pfad. Versuchen Sie, die Bilder mithilfe der Convert.toBase64String-Methode in ein Bytearray und dann in base64String zu konvertieren. Dann posten Sie die Base64-Zeichenfolge auf der Website.

Danke.

+0

Aber wohin schicke ich es? Ich sende es an der gleichen Stelle, wo ich die anderen Daten sende? Die Anzeigeninformationen müssen zu https://www.olx.ba/objava/zavrsi und das Bild zu https://www.olx.ba/objava/upload gehen. Können Sie mir ein Exemplar zur Verfügung stellen? Vielen Dank! – qpBlaze

+0

Senden Sie Daten URL von 2.jpg Bild in Formdaten. Auch wenn alles in Ordnung ist, könnte der Server den ** Content-Type ** stören. Versuchen Sie die Einstellung ** Content-Type **: multipart/form-data; anstelle von image/jpeg. –