8***@qq.com
8***@qq.com
  • 发布:2023-08-28 14:37
  • 更新:2023-11-27 11:32
  • 阅读:315

【报Bug】uniCloud.httpProxyForEip.get()

分类:uniCloud

产品分类: uniCloud/App

示例代码:

实例①:

const response = await uniCloud.httpProxyForEip.get('http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=密钥');

结果
报错: Not enough variable values available to expand '"keyWord"'

实例②:
const response = await uniCloud.httpProxyForEip.get('http://api.tianditu.gov.cn/geocoder', {
ds: {
"keyWord": "延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"
},
tk: "密钥"
});

结果
请求成功
{
"headers": {
"Server": "CloudWAF",
"Date": "Mon, 28 Aug 2023 06:34:04 GMT",
"Content-Type": "text/html; charset=UTF-8",
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Set-Cookie": "HWWAFSESID=59aa6460b8e2407923c; path=/; Secure; HttpOnly",
"Access-Control-Allow-Origin": "*",
"X-Frame-Options": "SAMEORIGIN",
"Access-Control-Allow-Credentials": "true",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
"Access-Control-Allow-Headers": "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range",
"Access-Control-Max-Age": "1728000",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
"X-XSS-Protection": "1; mode=block"
},
"body": "{\"prompt\":[{\"type\":2,\"keyword\":\"KEYWORD存在非法字符\"}]}",
"statusCode": "OK",
"statusCodeValue": 200
}

返回数据失败,keyword存在非法字符

操作步骤:

上面两个实例

预期结果:

在postMan中请求成功返回

{"msg":"ok","location":{"score":60,"level":"道路","lon":116.084460962,"lat":40.5493646740001,"keyWord":"延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"},"searchVersion":"6.4.6V","status":"0"}

实际结果:

在postMan中请求成功返回

{"msg":"ok","location":{"score":60,"level":"道路","lon":116.084460962,"lat":40.5493646740001,"keyWord":"延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"},"searchVersion":"6.4.6V","status":"0"}

bug描述:

使用uniCloud.httpProxyForEip.get()调用第三方接口失败,

第三方官网地址,http://lbs.tianditu.gov.cn/server/geocodinginterface.html(里面有api接口)

api接口:http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=您的密钥

请求失败,或者报错

2023-08-28 14:37 负责人:无 分享
已邀请:

最佳回复

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

感谢反馈,Bug已确认,加分,此问题阿里云下次发版时会进行修复

2023年11月27日更新:阿里云已修复此问题,可以试一下现在正常不正常

8***@qq.com

8***@qq.com (作者)

我试了两种方式,都不行

BoredApe

BoredApe - 有问题就会有答案。

uniCloud.httpProxyForEip当前仅持weixin.qq.com泛域名。若有其他域名代理需求,发送邮件到service@dcloud.io申请

  • 8***@qq.com (作者)

    我已经发送了代理域名请求,今天早上官方刚给我发的邮件,添加成功了,就是这个api接口调用不了

    2023-08-28 16:53

  • DCloud_uniCloud_WYQ

    回复 8***@qq.com: 建议自己拼接get参数,默认的拼接方法可能不能正确的被你们的服务端解析

    2023-08-28 16:56

  • 8***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 我试了很多次了,都不行,我真不知道问题出自哪

    2023-08-28 18:04

  • 8***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ: 你们能不能帮我测试一下这个接口,我感觉真不行

    2023-08-28 18:08

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

const data = {ds: {"keyWord": "延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"},tk: "密钥"}  
const query = Object.keys(data).map(key => `${key}=${encodeURIComponent(JSON.stringify(data[key]))}`).join('&')  
const res = await uniCloud.httpProxyForEip.get(`http://api.tianditu.gov.cn/geocoder?${query}`)

用上面的代码试一下

  • 8***@qq.com (作者)

    哥,你提供的代码我这边调用不了,我不知道你有没有测试过,


    然后我使用了下面这种方式,能成功调用

    const params = {

    ds: encodeURIComponent('{"keyWord":"延庆区北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}'),

    tk: '密钥'

    };


        const res123 = await uniCloud.httpProxyForEip.get('http://api.tianditu.gov.cn/geocoder', params);  

    console.log("res123",res123);

    但是我换一个接口: http://api.tianditu.gov.cn/administrative?postStr={"searchWord":"北京","searchType":"1","needSubInfo":"false","needAll":"false","needPolygon":"true","needPre":"true"}&tk=您的密钥


    就不能使用了,我也不知道为什么,问题出自哪,希望能耐心帮大专生解决一下,

    2023-08-28 20:27

  • DCloud_uniCloud_WYQ

    回复 8***@qq.com: 哥,你提供的代码我这边调用不了,我不知道你有没有测试过, 怎么个用不了法

    2023-08-29 11:24

  • 8***@qq.com (作者)

    回复 DCloud_uniCloud_WYQ:它显示key非法,不是我的ket的问题,是key不能用encodeURIComponent

    2023-08-29 12:12

要回复问题请先登录注册