请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

短链接 xiaomark 403错误

您好老师,我现在使用的是一个同学在问题回答中推荐使用的xiaomark生成短链接,我生成了自己的apikey,但是在运行之后,报了403的错误,查了几天的解决方案,都不能解决,麻烦帮我看下如何解决,非常着急
代码如下:

package com.imooc.o2o.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

com.alibaba fastjson 1.2.45 **/ /** * * 使用xiaomark的短链接服务生成短链接 * */

public class ShortNetAddressUtil {

static String actionUrl = "https://api.xiaomark.com/v1/link/create";

static String APIKEY = "34fa95f53dfce2e5bce3b141387183da";



public static void main(String[] args) {
    String longUrl = "https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&announce_id=11615366683l3hgk&version=63010043&lang=zh_CN&token=";
    System.out.println(getShortURL(longUrl));

}

@SuppressWarnings("deprecation")
public static String getShortURL(String longUrl) {
    //longUrl = java.net.URLEncoder.encode(longUrl);  xiaomark不需要处理原网址
    //传好json数据
    String apikey = APIKEY;
    JSONObject param = new JSONObject();
    param.put("apikey",apikey);
    param.put("origin_url",longUrl);
    //利用RestTemplate进行第三方接口的调用
    SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
    //设置超时时间30s
    requestFactory.setConnectTimeout(30*1000);
    requestFactory.setReadTimeout(30*1000);
    RestTemplate restTemplate = new RestTemplate(requestFactory);
    ResponseEntity<JSONObject> jsonObjectResponseEntity = restTemplate.postForEntity(actionUrl,param,JSONObject.class);
   //将得到的json对象的body部分进行处理
    JSONObject json = jsonObjectResponseEntity.getBody();
    if (json == null) {
        return "";
    }
    //读取多层嵌套的json数据
    return json.getJSONObject("data").getJSONObject("link").getString("url");
}

}

错误如下:
Exception in thread “main” org.springframework.web.client.HttpClientErrorException$Forbidden: 403 FORBIDDEN: “{“code”:13,“data”:{},“message”:”\u8df3\u8f6c\u94fe\u63a5\u7684\u57df\u540d\u4e0d\u5728\u767d\u540d\u5355\u4e4b\u5185"}"
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:468)

正在回答 回答被采纳积分+3

1回答

翔仔 2022-04-23 23:11:43

同学好,这里403是说没有权限去调用服务呢,短连接目前市面基本都封停了,可能是因为赚不到钱,可以尝试自己搭建一套,访问就可以了,其实主要就是生成一个对应于当前url的短网址,并将两者映射关系存储在数据库里,网上有很多短连接已经实现好的服务,拿来直接用也是可以的

https://gitee.com/m1603565290/url


如果实在不行,就只能严格按照xiaomark的文档去访问,应该是配置的key啥的匹配不上所以访问不到

https://xiaomark.com/book/open-api/group.html#%E8%AF%B7%E6%B1%82


0 回复 有任何疑惑可以回复我~
  • 提问者 慕妹1025182 #1
    您好老师,感谢回复!想问下“应该是配置的key啥的匹配不上所以访问不到”能具体说下吗?您自己有查看过xiaomark的文档的情况吗?“https://xiaomark.com/dashboard/a-domain/setting”现在这个已经无法访问。我相信后面很多同学都会遇到这样的问题,如果不解决的话,课程质量会下降很多
    回复 有任何疑惑可以回复我~ 2022-04-24 09:46:43
  • 翔仔 回复 提问者 慕妹1025182 #2
    同学好,这个服务我试了下还是能生成短链接的呀,目前工信部这方面管控很严,需要有企业验证的账号才能去使用百度等大厂提供的短链接服务,所以目前只能用xiaomark这个服务,它每天免费能生成50个短链,至于你说的403就是好比你用不正确的正好密码来登陆就登陆不进去一样,说是没有权限访问服务,但是咱们上下文和环境都不一样,我具体也没法帮你精准定位问题,建议还是跟着相关文档去搭建 https://blog.csdn.net/yangshucheng2018/article/details/117715554,写个demo就知道能不能通了。
    此外,长期最有效的方式就是自己搭建一套了,除了上面我提供的gitee搭建短链接,短期的解决方案也可以按照 https://juejin.cn/post/6844904017210900487 一步步进行搭建,这块也有最终源码, 和咱们课程一样,配置好mysql地址,搭建起这套服务,然后就能使用了,无非就是保存你的长连接到数据库里,和你的短链接映射起来,这样后续访问这个服务的时候,传入短链接,就能获取到对应的长连接,就能访问到对应的服务了。后续我这边有空的时候,会出一个搭建短网址服务的文档,到时候大家也可以参考。这块是客观原因没办法,只能见招拆招了。
    回复 有任何疑惑可以回复我~ 2022-04-25 23:08:28
  • 翔仔 #3
    我用xiaomark的服务生成的https://sourl.cn/y5ddKt 是能访问到baidu.com的,记得在他的appkey页面上添加你的域名白名单,有可能因为没添加域名白名单而出现403的异常
    回复 有任何疑惑可以回复我~ 2022-04-25 23:10:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信