2017-10-14 12 views
0

HttpWebRequestを使用してolx.baに広告を掲載したいと思います。広告を投稿するにはまずログインしなければならなかったので、そのリクエストからクッキーを取り出して、広告を投稿するリクエストに渡しました。今までは広告は正しく掲載されていましたが、広告に画像はありません。Httpwebrequestアップロードテキストと画像

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

ウェブサイトは、画像をアップロードするためのフォームを持っており、私はこれをアップロードする画像を選択したときにそのフォームからの要求である。

リクエストヘッダ

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 

リクエストペイロード

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


------WebKitFormBoundaryAczld5sbjrh0FX5q-- 

アップロードフォームはdropzone.jsからのものだと思います。どのように私はこの作品を作ることができますか?

答えて

1

イメージをパスとして読み込む前に。 Convert.toBase64Stringメソッドを使用して、イメージをバイト配列に変換してからbase64Stringに変換してみます。次にbase64文字列をWebサイトに投稿します。

ありがとうございました。

+0

しかし、どこに送信すればよいですか?他のデータを送信するのと同じ場所に送信しますか?広告の詳細はhttps://www.olx.ba/objava/zavrsiに、画像はhttps://www.olx.ba/objava/uploadに移動する必要があります。あなたは私に例を教えてもらえますか?ありがとうございました! – qpBlaze

+0

2.jpgイメージのデータURLをformdataに送信します。また、すべてがうまくいけば、サーバーを悩ます唯一のものは** Content-Type **かもしれません。 ** Content-Type **:multipart/form-dataを設定してみてください。 image/jpegの代わりに。 –