Android接入阿里云短信服务最全解析(包含demo)

   日期:2020-05-22     浏览:123    评论:0    
核心提示:阿里云短信服务真是太坑了把 ,,,,,,老铁们 我太难了废话不多说 直接开始了昨天接到需求需要将阿里云的短信服务接入到软件中进行登陆验证移动开发

阿里云短信服务真是太坑了把 ,,,,,,
老铁们 我太难了

昨天接到需求需要将阿里云的短信服务接入到软件中进行登陆验证

我用的是阿里云的javaSDK,因为这里我用的是androidstudio所以我直接选择使用添加jar包的方式来继承(噩梦开始的地方)

AndroidStudio添加jar包方式



找到我们的libs目录 将我们下载好的sdk复制到该目录下
然后在我们的gradle app中的Android中添加

 sourceSets{
        main{
            jniLibs.srcDirs=['libs']
        }
    }

这样我们的目录下就会显示

说明添加成功

添加依赖




点击ok然后我们的gradle中就会多一句依赖 就说明我们添加成功了

ok依赖添加完成 让我们来一步步实现短信功能

然后就是我们的测试代码块
首先是阿里云提供的代码块:


然后就是我们的代码块

 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
           final IAcsClient client = new DefaultAcsClient(profile);
           //构建请求
           final CommonRequest request = new CommonRequest();
           request.setMethod(MethodType.POST);
           request.setDomain("dysmsapi.aliyuncs.com");
           request.setVersion("2017-05-25");
           request.setAction("SendSms");
           //自定义参数->手机号、验证码、签名、模板
           request.putQueryParameter("RegionId", "cn-hangzhou");
           request.putQueryParameter("PhoneNumbers", "you phonenumber");
           request.putQueryParameter("SignName", "签名");
           request.putQueryParameter("TemplateCode", "短信模板");
           HashMap<String,Object> map = new HashMap<>();
           map.put("code","2233");
           request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
            try {
            CommonResponse response = client.getCommonResponse(request);
           return response.getHttpResponse().isSuccess();
           } catch (ServerException e) {
            e.printStackTrace();
          } catch (ClientException e) {
            e.printStackTrace();
         }

当我第一次运行时 ,意料之中 崩溃了

报未找到这个类
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/gson/JsonParser;
然后我百度了一个 是一个json解析数据的工具

解决方法:

buildgradle中添加了json依赖

	implementation 'com.google.code.gson:gson:2.8.6'
扩展 :想要使用JSONObject.toJSONString(map)方法需要添加依赖
	implementation 'com.alibaba:fastjson:1.1.71.android'

然后当我再次运行时又报错

又说类找不到
然后这里需要添加javax.xml.bind.jar包的依赖
当我再次运行时 还是报错 。。。。
然后又报一个类找不到 然后经过百度才发现是还需要添加一个xercesImpl.jar包 才可以 终于终于可以了


这里是最终需要的jar包

所需要的jar包都上传到我上传的资源中了 需要的可以直接去下载压缩包

我最终的代码:

public class MainActivity extends AppCompatActivity {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   button = findViewById(R.id.clicked);
   button.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
           final IAcsClient client = new DefaultAcsClient(profile);
           //构建请求
           final CommonRequest request = new CommonRequest();
           request.setMethod(MethodType.POST);
           request.setDomain("dysmsapi.aliyuncs.com");
           request.setVersion("2017-05-25");
           request.setAction("SendSms");
           //自定义参数->手机号、验证码、签名、模板
           request.putQueryParameter("RegionId", "cn-hangzhou");
           request.putQueryParameter("PhoneNumbers", "you phonenumber");
           request.putQueryParameter("SignName", "签名");
           request.putQueryParameter("TemplateCode", "短信模板");
           HashMap<String,Object> map = new HashMap<>();
           map.put("code","2233");
           request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));

           new Thread(new Runnable(){
               @Override
               public void run() {
                   try {
                       CommonResponse response = client.getCommonResponse(request);

                       System.out.println(response.getData());
                       Log.i("ssssss","@"+response.getData());
                   } catch (ServerException e) {
                       Log.i("wokankna","@"+e.toString());
                       e.printStackTrace();
                   } catch (ClientException e) {
                       Log.i("wochouhou","@"+e.toString());
                       e.printStackTrace();
                   }
               }
           }).start();


       }
   });


    }


}

需要的依赖

    implementation 'com.alibaba:fastjson:1.1.71.android'
    implementation 'com.google.code.gson:gson:2.8.6'

Android9.0 默认是禁止所有的http

请求的,需要在代码中设置如下代码才可以正常进行网络请求: android:usesCleartextTraffic=“true”。
Manifest文件:


欧克 这就结束了 发送一下 看看效果:

这就完成咯 有什么不懂得可以私信我或者评论 看到我都会一一解答得

如果对你有用 记得点赞哟 爱你 mua~

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服