Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTPPOST返回整个网站的html,而不是JSON响应_C#_Json_Post - Fatal编程技术网

C# HTTPPOST返回整个网站的html,而不是JSON响应

C# HTTPPOST返回整个网站的html,而不是JSON响应,c#,json,post,C#,Json,Post,因此,我尝试使用api从服务器获取JSON响应 问题是它返回网站的html代码。如果您查看api页面,它会说它应该返回一些json。 我想我的代码有问题 有什么建议吗 我正在使用的图像: 我的代码: static void Main(string[] args) { Image img = Image.FromFile("image.jpg"); String base64 = ImageToBase64(img, System.Drawi

因此,我尝试使用api从服务器获取JSON响应 问题是它返回网站的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;
        }
    }
static void Main(字符串[]args)
{
Image img=Image.FromFile(“Image.jpg”);
字符串base64=ImageToBase64(img,System.Drawing.Imaging.ImageFormat.Jpeg);
var request=(HttpWebRequest)WebRequest.Create(“http://www.whatanime.ga/api/search?token=");
var postData=base64;
var data=Encoding.UTF8.GetBytes(postData);
request.Method=“POST”;
request.ContentType=“application/x-www-form-urlencoded”;
使用(var stream=request.GetRequestStream())
{
stream.Write(数据,0,数据长度);
}
var response=(HttpWebResponse)request.GetResponse();
var responseString=newstreamreader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine(“数据:+responseString”);
Console.ReadLine();
}
公共静态字符串ImageToBase64(图像图像,System.Drawing.Imaging.ImageFormat格式)
{
使用(MemoryStream ms=new MemoryStream())
{
图像保存(ms,格式);
byte[]imageBytes=ms.ToArray();
string base64String=Convert.ToBase64String(imageBytes);
返回base64String;
}
}

好吧,在搞乱了其他选项之后,我找到了一个(适合我的)可行的解决方案 我发布这篇文章是为了帮助将来有同样问题的人

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;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.IO;
使用System.Net.Http;
使用系统图;
Net系统;
使用System.Collections.Specialized;
命名空间控制台应用程序3
{
班级计划
{
静态void Main(字符串[]参数)
{
Image img=Image.FromFile(“Image.jpg”);
字符串base64=ImageToBase64(img,System.Drawing.Imaging.ImageFormat.Jpeg);
使用(var client=new WebClient())
{
var values=新的NameValueCollection();
值[“图像”]=base64;
var response=client.UploadValues(“https://whatanime.ga/api/search?token=“、价值观);
var responseString=Encoding.Default.GetString(响应);
Console.WriteLine(“数据:+responseString”);
Console.ReadLine();
}
}
公共静态字符串ImageToBase64(图像图像,System.Drawing.Imaging.ImageFormat格式)
{
使用(MemoryStream ms=new MemoryStream())
{
图像保存(ms,格式);
byte[]imageBytes=ms.ToArray();
string base64String=Convert.ToBase64String(imageBytes);
返回base64String;
}
}
}

好吧,在搞乱了其他选项之后,我找到了一个(适合我的)可行的解决方案 我发布这篇文章是为了帮助将来有同样问题的人

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;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.IO;
使用System.Net.Http;
使用系统图;
Net系统;
使用System.Collections.Specialized;
命名空间控制台应用程序3
{
班级计划
{
静态void Main(字符串[]参数)
{
Image img=Image.FromFile(“Image.jpg”);
字符串base64=ImageToBase64(img,System.Drawing.Imaging.ImageFormat.Jpeg);
使用(var client=new WebClient())
{
var values=新的NameValueCollection();
值[“图像”]=base64;
var response=client.UploadValues(“https://whatanime.ga/api/search?token=“、价值观);
var responseString=Encoding.Default.GetString(响应);
Console.WriteLine(“数据:+responseString”);
Console.ReadLine();
}
}
公共静态字符串ImageToBase64(图像图像,System.Drawing.Imaging.ImageFormat格式)
{
使用(MemoryStream ms=new MemoryStream())
{
图像保存(ms,格式);
byte[]imageBytes=ms.ToArray();
string base64String=Convert.ToBase64String(imageBytes);
返回base64String;
}
}
}

如我在文档中所读

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 }
    });
}
使用(WebClient=newWebClient())
{
响应=客户端。上载值(“http://www.whatanime.ga/api/search?token=", 
新的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).
如果API令牌无效,则返回HTTP 403。 如果缺少API令牌,则返回HTTP 401。 请注意,有1MB post大小的硬限制。您应该确保Base64编码的映像小于1MB。否则,服务器将使用HTTP 413响应(请求实体太大)。
如我在文档中所读

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 }
    });
}
使用(WebClient=newWebClient())
{
响应=客户端。上载值(“http://www.whatanime.ga/api/search?token=", 
新的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).
如果API令牌无效,则返回HTTP 403。 如果缺少API令牌,则返回HTTP 401。 请注意,有1MB post大小的硬限制。您应该确保Base64编码的映像小于1MB。否则,服务器将使用HTTP 413响应(请求实体太大)。
实际上重要的是什么
http://www.whatanime.ga/api/search?token=
returnsLook在api页面,它太长了,无法在这里发布。但是如果令牌无效,它应该返回错误403,如果令牌无效,它应该返回错误401。那么如果令牌有效,它会返回什么?实际上它的重要性是