2017-10-20 24 views
0

ConvertApi webをPdf Apiに呼び出す際に、エラー「(400)Bad Request」が表示されます。WebClient C#throws(400)Bad Request

+1

へようこそSOである可能性があります。どのように助けを得るのかは、あなたのプロブレムを述べる方法はかなり困難です。あなたはあなたの記事の読者には見えないものを参照します。 ConvertAPIとは何ですか?あなたが書いたAPIか、他の誰かから書かれたAPIですか?あなたが呼び出すこのAPIのメソッドと適切な要求/応答は何ですか。 HTTPステータスコード400は、リクエストに適切に応答するために、このAPIから期待されないものがあることを意味します。通常、リクエストに含まれる虚偽の項目に関する詳細情報があります。 Thanks – Christos

+0

400 BAD REQUESTは、サーバーに不正な形式でリクエストを送信していることを意味します。それ以上はあなたに話すことはできません。あなたはそれを自分で見つけた可能性があります。 – Amy

+0

ConvertAPIは私のプロジェクトでそれを消費していた第三者Apiです。 – Avinash

答えて

0
using (var client = new WebClient()) 
      { 
       client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
       var response = client.UploadString("https://v2.convertapi.com/web/to/pdf?secret=" + Secret + "&Url=" + value + "&ConversionDelay=" + ConversionDelay, ""); 
       var ocontent3 = JsonConvert.DeserializeObject<FileList>(response); 
       byte[] result = ocontent3.Files[0].FileData; 
      } 
+0

最後に、私は上記の解決策で私の答えを見つけました。これはあなたを助けるかもしれない.. – Avinash

0

バイナリデータサポートマルチパートまたはアプリケーション/オクテットストリーム(バイナリファイル)応答で動作ConvertAPIおよび他の多くの残りのAPIは、C#でバイナリ応答の代わりに、JSON(テキスト)を使用する方がよいです。レスポンスボディは小さく、ダウンロード時間は短く、JSON Base64からバイナリデータをデコードする必要はありません。

だからコードが

 const string secret = "<YourSecret>"; 
     const string url = "http://www.google.com"; 
     const int conversionDelay = 1; 
     const string fileToSave = @"C:\Projects\_temp\test1.pdf"; 

     using (var client = new WebClient()) 
     { 
      client.Headers.Add("accept", "application/octet-stream"); 
      var response = new byte[] { }; 
      try 
      { 
       response = client.UploadValues("https://v2.convertapi.com/web/to/pdf?secret=" + secret, "POST", new NameValueCollection 
       { 
        { "Url", url }, 
        { "ConversionDelay", conversionDelay.ToString() } 
       }); 
      } 
      catch (WebException e) 
      { 
       Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
       Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
       Console.WriteLine("Body : {0}", new StreamReader(e.Response.GetResponseStream()).ReadToEnd()); 
      } 

      if (response != null) 
       File.WriteAllBytes(fileToSave, response); 
     } 
関連する問題