2017-02-04 31 views
0

所以我嘗試擺脫使用this API 問題服務器的JSON響應是返回網站的homepage的HTML代碼。如果你看看api頁面,它說它應該返回一些json。 我認爲我的代碼有問題。HTTP後返回整個網站的HTML,而不是一個JSON響應

有什麼建議嗎?

圖像IM使用:anime picture

我的代碼:

 static void Main(string[] args) 
    { 
     Image img = Image.FromFile("image.jpg"); 
     String base64 = ImageToBase64(img, System.Drawing.Imaging.ImageFormat.Jpeg); 

     var request = (HttpWebRequest)WebRequest.Create("http://www.whatanime.ga/api/search?token=<token>"); 

     var postData = base64; 
     var data = Encoding.UTF8.GetBytes(postData); 

     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded"; 

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

     var response = (HttpWebResponse)request.GetResponse(); 

     var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

     Console.WriteLine("data:" + responseString); 
     Console.ReadLine(); 
    } 

    public static string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      image.Save(ms, format); 
      byte[] imageBytes = ms.ToArray(); 

      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 
+1

其實重要的是什麼'http://www.whatanime.ga/api/search?token= '返回 –

+0

看看api頁面,它的帖子太長了。但如果令牌無效,則返回錯誤403;如果令牌無效,則返回錯誤401。 –

+0

那麼如果令牌有效,它返回什麼? –

回答

1

好後,一些與其他選項搞亂我已經找到了工作(對我來說)解決方案 我張貼這種幫助與未來人們面臨同樣的問題。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using System.Net.Http; 
using System.Drawing; 
using System.Net; 
using System.Collections.Specialized; 

namespace ConsoleApplication3 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Image img = Image.FromFile("image.jpg"); 
     String base64 = ImageToBase64(img, System.Drawing.Imaging.ImageFormat.Jpeg); 

     using (var client = new WebClient()) 
     { 
      var values = new NameValueCollection(); 
      values["image"] = base64; 
      var response = client.UploadValues("https://whatanime.ga/api/search?token=<token>", values); 
      var responseString = Encoding.Default.GetString(response); 
      Console.WriteLine("data: " + responseString); 
      Console.ReadLine(); 
     } 
    } 

    public static string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      image.Save(ms, format); 
      byte[] imageBytes = ms.ToArray(); 

      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 
} 
1

正如我在文檔閱讀

POST /api/search?token={your_api_token} HTTP/1.1 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Host: whatanime.ga 

image={Base64 Encoded Image} 

你必須提供密鑰對價值提供圖像

像這樣

using (WebClient client = new WebClient()) 
{ 
    response = client.UploadValues("http://www.whatanime.ga/api/search?token=<token>", 
     new NameValueCollection() {{ "image", base64 } 
    }); 
} 

末讀取響應狀態

Returns HTTP 403 if API token is invalid. 

Returns HTTP 401 if API token is missing. 

Note that there is a hard limit of 1MB post size. You should ensure your Base64 encoded image is < 1MB. Otherwise the server responds with HTTP 413 (Request Entity Too Large). 
相關問題