繁体   English   中英

将 C# 中的 POST 请求转换为 JavaScript

[英]Convert POST Request in C# to JavaScript

我需要将此 C# 代码转换为 JavaScript:

HttpClient client = new HttpClient();
string SECRET_KEY = "my_secret_key";

Byte[] bytes = System.IO.File.ReadAllBytes(@"c:\1.jpg");
string imagebase64 = Convert.ToBase64String(bytes);

var content = new StringContent(imagebase64);

var response = await client.PostAsync("https://api.openalpr.com/v2/recognize_bytes?recognize_vehicle=1&country=us&secret_key=" + SECRET_KEY, content).ConfigureAwait(false);

var buffer = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
var byteArray = buffer.ToArray();
var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length);

我尝试在 JavaScript 中执行此操作:

var file = document.querySelector('input[type="file"]').files[0];
getBase64(file).then(
    data => $.ajax({
        type: 'POST',
        url: 'https://api.openalpr.com/v2/recognize_bytes?recognize_vehicle=1&country=br&secret_key=' + secret_key,
        contentType: 'text/plain; charset=utf-8',
        data: data,
        success: function (ret) {
            console.log(ret);
        },
        error: function (ret) {
            console.log(ret);
        }
    }

基本上,两者都旨在将图像转换为 Base64 并通过 POST 发送到 API 端点。

在这两种情况下,转换都按预期工作,但是在 JS 中出现错误。

错误 400:加载图像时出错

我无权访问此 API 的后端,也没有支持。 我认为有些要求是不同的,可能是类型的格式或其他东西......

您是否调试了获取 base64 格式的文件变量。 首先尝试一下,如果这不起作用,请尝试以下将文件转换为 base64 的方法:

const toBase64 = file => new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
});

调用上述方法使用: toBase64(file)

一旦形成发布请求,请在邮递员工具中检查。 我希望它能解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM