鸿蒙开发实战系列之一:
鸿蒙开发实战系列之二:
过了一个漫长的中秋+国庆假期,大家伙的鸿蒙内功修炼的怎么样了?难道像小蒙一样,都在吃吃喝喝中度过么,哎,罪过罪过,对不起那些鸡鸭鱼肉啊,赶紧回来写篇文章收收心,让我们一起看看,在鸿蒙中如何发送网络请求吧。
本文会从Java原生访问入手,进而再使用Retrofit访问网络,可以满足绝大部分开发者对于鸿蒙网络访问方面的代码需求,开始之前需要先做一下基础配置。
"reqPermissions": [
{
"reason": "",
"name": "ohos.permission.INTERNET"
}
]
"deviceConfig": {
"default": {
"network": {
"usesCleartext": true,
"securityConfig": {
"domainSettings": {
"cleartextPermitted": true,
"domains": [
{
"subDomains": true,
"name": "www.baidu.com"
}
]
}
}
}
}
}
其中的name即为可以直接http访问的域名,如果全是https链接则可以做该不配置,切记域名是不带http://的,切记域名是不带http://的,切记域名是不带http://的,重要的事说三遍。
由于鸿蒙系统支持Java开发,所以我们可以直接使用Java原生的Api来进行网络访问
该方式使用了java的url.openConnection() Api来获取网络数据
package com.example.demo.classone;
import javax.net.ssl.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.SecureRandom;
public class HttpDemo {
/**
*访问url,获取内容
* @param urlStr
* @return
*/
public static String httpGet(String urlStr){
StringBuilder sb = new StringBuilder();
try{
//添加https信任
SSLContext sslcontext = SSLContext.getInstance("SSL");//第一个参数为协议,第二个参数为提供者(可以缺省)
TrustManager[] tm = {
new HttpX509TrustManager()};
sslcontext.init(null, tm, new SecureRandom());
HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
public boolean verify(String s, SSLSession sslsession) {
System.out.println("WARNING: Hostname is not matched for cert.");
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
HttpsURLConnection.setDefaultSSLSocketFactory(sslcontext.getSocketFactory());
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(10000);
connection.setConnectTimeout(10000);
connection.connect();
int code = connection