解决接入阿里云语音通知接口,调用报错java.lang.NoSuchMethodError: okhttp3.Headers.iterator()Ljava/util/Iterator;的问题

项目场景:

Java1.8
SpringBoot2.2.x
引入SDK:
<dependency>
   <groupId>com.aliyun</groupId>
    <artifactId>dyvmsapi20170525</artifactId>
    <version>0.0.2</version>
</dependency>

问题描述:

在实际调用SDK语音通知接口时,无法正常获取请求响应: 在以下代码中,手机已经能正常接收到通知,但是代码内无法获取请求响应,控制台抛出以下异常:

异常

Exception in thread "main" java.lang.NoSuchMethodError: okhttp3.Headers.iterator()Ljava/util/Iterator;
	at com.aliyun.tea.TeaResponse.<init>(TeaResponse.java:30)
	at com.aliyun.tea.Tea.doAction(Tea.java:70)
	at com.aliyun.tearpc.Client.doRequest(Client.java:154)
	at com.aliyun.dyvmsapi20170525.Client.singleCallByTtsWithOptions(Client.java:398)
	at com.aliyun.dyvmsapi20170525.Client.singleCallByTts(Client.java:403)
	at com.hzqx.www.work.dyvms.CustomDyvmsClient.execute(CustomDyvmsClient.java:38)
	at com.hzqx.www.work.task.WarningTask.gridWarning(WarningTask.java:116)
	at com.hzqx.www.work.task.WarningTask.gridAMWarning(WarningTask.java:54)
	at com.hzqx.www.work.task.WarningTask.main(WarningTask.java:95)

代码:

package com.hzqx.www.work.dyvms;

import com.alibaba.fastjson.JSON;
import com.aliyun.dyvmsapi20170525.models.SingleCallByTtsRequest;
import com.aliyun.dyvmsapi20170525.models.SingleCallByTtsResponse;
import com.aliyun.tea.TeaConverter;
import com.aliyun.tea.TeaPair;
import com.aliyun.tearpc.models.Config;
import com.aliyun.dyvmsapi20170525.Client;
import lombok.extern.slf4j.Slf4j;

/**
 * @author YangXiaohui
 * @since 2020/11/18 10:31
 */
@Slf4j
public class CustomDyvmsClient {
    private final Client client;
    private final Config config;

    public CustomDyvmsClient(String accessKeyId, String accessKeySecret,String regionId) throws Exception {
        this.config=new Config();
        this.config.accessKeyId=accessKeyId;
        this.config.accessKeySecret=accessKeySecret;
        this.config.regionId=regionId;
        this.client=new Client(this.config);
    }


    public void execute(String ttsCode,String calledNumber) throws Exception {
        SingleCallByTtsRequest request = SingleCallByTtsRequest.build(TeaConverter.buildMap(
                new TeaPair("calledShowNumber", ""),
                new TeaPair("calledNumber", calledNumber),
                new TeaPair("ttsCode", ttsCode),
                new TeaPair("speed", -100),
                new TeaPair("playTimes", 3)
        ));
        SingleCallByTtsResponse response=this.client.singleCallByTts(request);
        log.info(response.toString());
    }
    public void execute(String ttsCode,String ttsParamJsonStr,String calledNumber) throws Exception {
        SingleCallByTtsRequest request = SingleCallByTtsRequest.build(TeaConverter.buildMap(
                new TeaPair("calledShowNumber", ""),
                new TeaPair("calledNumber", calledNumber),
                new TeaPair("ttsCode", ttsCode),
                new TeaPair("ttsParam", ttsParamJsonStr),
                new TeaPair("speed", -100),
                new TeaPair("playTimes", 3)
        ));
        SingleCallByTtsResponse response=this.client.singleCallByTts(request);
        log.info(JSON.toJSONString(response));
    }

    public static void main(String[] args) throws Exception {
        CustomDyvmsClient client=new CustomDyvmsClient("accessKeyId","accessKeySecret","cn-hangzhou");
        client.execute("TTS_205123469","15836204523");
    }
}


原因分析:

抛出的异常为`java.lang.NoSuchMethodError`,这个异常在Java内部是没有找到要调用的方法时抛出的,和NoClassxxx是一类的,所以考虑是缺失了`okhttp3`的依赖导致的问题

解决方案:

pom文件增加okhttp3依赖
<dependency>
	<groupId>com.squareup.okhttp3</groupId>
	<artifactId>okhttp</artifactId>
	<version>4.9.0</version>
</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值