java 接口 400_java编码请求腾讯云OCR的API返回结果报400

首先,参考文档地址在此。

https://cloud.tencent.com/doc…

以下是详细描述。

我想学习调用调用腾讯云开放的OCR接口,在找了众多资料以后,第一次解决了401错误后,编译不报错,但是现在停在返回的400错误不知道如何解决问题。请大神帮忙查看并不吝指教,谢谢。

找了好几遍没有找到为什么会报400了,请大神忙里抽闲帮忙看看,谢谢。### 问题描述

问题出现的环境背景及自己尝试过哪些方法

使用的工具是IDEA2017,尝试过去掉head和自己添加head的方法了。尝试过用以下请求代码,但是得到的返回数据为空。即response是null,连toString都会报空指针。

Response response = given().contentType("application/json")

.header("host", "recognition.image.myqcloud.com")

.header("authorization", authorization)

.body(body)  //这个body就是主函数里面的body

.post("http://recognition.image.myqcloud.com/ocr/general");

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

主函数代码:

public static void main(String arg[]) throws Exception {

String appId = "这个用的是腾讯提供的id";

String secretKey = "这个用的是腾讯提供的key";

String secretId = "这个用的是腾讯提供的id";

String bucketName = "";

Long expired = 259200L;

//下面这个是签名生成代码,是腾讯提供的代码,没有任何更改。

String authorization = Sign.appSign(appId, secretId, secretKey, bucketName, expired);

//这是生成的图片base64代码,经测试是成功输出了图片的base64

String imageCode = GetImageStr(new File("C:\\Users\\William\\Desktop\\\\bandicam 2018-08-14 17-58-15-348.mp4_20180814_180014.334.jpg").getAbsolutePath());

//这个是自建类,JSON序列化后格式是这样:{"appid":"","url":null,"image":"/9j/4AAQSkZJR..."}

JsonOcr jsonOcr = new JsonOcr();

jsonOcr.setAppid(appId);

jsonOcr.setImage(imageCode);

ObjectMapper mapper = new ObjectMapper();

String body = mapper.writeValueAsString(jsonOcr);

//这里执行连接,采用的是POST请求,传入的参数是Url,请求方式,JSON内容和签名。

String url = "http://recognition.image.myqcloud.com/ocr/general";

HttpResponse response = HttpUtil.**doExecuteOCR**(url, HttpUtil.Method.POST, body, authorization);

System.out.println(response.toString());

}

请求代码如下:

public static HttpResponse doExecuteOCR(String url, Method method, String content,String authorization) throws IOException, NullPointerException {

RequestConfig defaultRequestConfig = RequestConfig.custom()

.setSocketTimeout(2 * 60 * 1000)

.setConnectTimeout(2 * 60 * 1000)

.setConnectionRequestTimeout(2 * 60 * 1000)

.setStaleConnectionCheckEnabled(true)

.build();

CloseableHttpClient client = HttpClients.custom()

.setDefaultRequestConfig(defaultRequestConfig)

.build();

//创建请求体

HttpEntity entity = new StringEntity(content, ContentType.APPLICATION_JSON);

//创建请求

HttpRequestBase request = **buildRequestOcr**(url, method, entity,authorization);

return client.execute(request);

}

创建请求代码如下:

private static HttpRequestBase buildRequestOcr(String url, final HttpUtil.Method method, HttpEntity entity,String authorization) {

HttpRequestBase request = null;

HttpPost post = new HttpPost(url);

post.setHeader("host","recognition.image.myqcloud.com");

post.setHeader("content-type","application/json");

post.setHeader("authorization",authorization);

post.setEntity(entity);

request = post;

return request;

}

腾讯接口的返回结果通过System.out.println(response.toString())得到输出如下:

HttpResponseProxy{HTTP/1.1 400 Bad Request [Server: nginx, Date: Thu, 16 Aug 2018 07:44:48 GMT, Content-Type: application/json; charset=utf-8, Content-Length: 86, Connection: keep-alive]}

你期待的结果是什么?实际看到的错误信息又是什么?

希望能有大神告诉我,到底错误在哪儿?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值