所以我试图使用this api从服务器获取JSON响应 问题是它返回网站homepage的html代码。如果你看一下api页面,它会说它应该返回一些json。 我认为我的代码存在问题。
有什么建议吗?
我的代码:
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;
}
}
答案 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 :(得分: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).