HarmonyOS鸿蒙Next中axios请求
HarmonyOS鸿蒙Next中axios请求
我这边在请求拦截器里打印request里data里面的内容是有值
但是request打印出来data却为空
日志为:
com.scrcu...rHarmony I 请求头是这个txnBody123::::::::::: UUqOkp8W7fjGh/WTXIRO0q8Oi4anm3AmlofBoZ3Fa95LHPKDP+i9cCN+EDD1Ve9H+FSUpX+BCyOuEynwTXyTq4XTFPuWaqVlaj+nV81r1mpk1xLKVhhP7CF69hAq3PQXAn3Rs8jk8gl+bhLQ716S7B3jIJppdiSkZ6F1lP5Q8dg=
05-29 09:25:01.644 7259-7259 A03D00/JSAPP com.scrcu...rHarmony I 请求头是这个txnHeaderInfo456::::::::::: eyJub25jZVN0ciI6IjIwMjQwNTI4MTkwMzQzNDM5MDkxMzQxNDE2NzMxOTAwIiwidHhuVG0iOiIyMDI0MDUyODE5MDM0MyIsIm9zVmVyc2lvbiI6InBob25lL0hVQVdFSS9IVUFXRUkvQUxOLzMuMC4wLjIyKENhbmFyeTMpL0FMTi1BTDAwL0FMTi1BTDAwLzEyL2RlZmF1bHQvZGVmYXVsdCIsImFwcFZlcnNpb24iOiIxLjAuMCIsImFwcENobE5vIjoiMDQiLCJ0eG5Db2RlIjoiNTA0IiwiY2hsTm8iOiI1MDQiLCJzaWduQXR1cmUiOiJiUnlHUXlNMFZScnVVRk1wWDJmYmFHTEdpdDFWTDZPaHAvUVRmQlhTdGZyZzljSG5XenovTkVVQVIzbXJOc3ZQdUhNaFFoKzJ2ZnRFUXVhOFhTL3BHR3FiWVVJNGlwdFFKWEtEcHo1NFExNlp6L2wxVERJa3N2bUZ1WTBqS1o3TE1jamV4MHNiWFdKbENLSHRWa1JWbTVVb3hSV2VENjJuWFV6WVZ4Y2k2WXM9IiwiZHZJbWVpIjoiNjcyYjNhMzEtMTA2Zi00Njg3LWEyODYtYWI2Yjg1MWE5ZTI5IiwidHhuQm9keSI6IlVVcU9rcDhXN2ZqR2gvV1RYSVJPMHE4T2k0YW5tM0FtbG9mQm9aM0ZhOTVMSFBLRFAraTljQ04rRUREMVZlOUgrRlNVcFgrQkN5T3VFeW53VFh5VHE0WFRGUHVXYXFWbGFqK25WODFyMW1wazF4TEtWaGhQN0NGNjloQXEzUFFYQW4zUnM4ams4Z2wrYmhMUTcxNlM3QjNqSUpwcGRpU2taNkYxbFA1UThkZz0iLCJvc1R5cGUiOiIwMSJ9
05-29 09:25:01.644 7259-7259 A03D00/JSAPP com.scrcu...rHarmony I 请求内容为789:::::::: {"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["ohos"],"transformRequest":[null],"transformResponse":[null],"timeout":1000,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{"Blob":null},"headers":{"Accept":"application/json, text/plain, */*","X-Custom-Header":"foobar"},"baseURL":"https://****.****.***:8080/SOA/","data":{},"url":"504.504001","method":"post","params":{}}
代码为:
let requestDic123 = new HashMap<string , string>()
requestDic123.set('txnBody' , 'UUqOkp8W7fjGh/WTXIRO0q8Oi4anm3AmlofBoZ3Fa95LHPKDP+i9cCN+EDD1Ve9H+FSUpX+BCyOuEynwTXyTq4XTFPuWaqVlaj+nV81r1mpk1xLKVhhP7CF69hAq3PQXAn3Rs8jk8gl+bhLQ716S7B3jIJppdiSkZ6F1lP5Q8dg=')
requestDic123.set('txnHeaderInfo' ,'eyJub25jZVN0ciI6IjIwMjQwNTI4MTkwMzQzNDM5MDkxMzQxNDE2NzMxOTAwIiwidHhuVG0iOiIyMDI0MDUyODE5MDM0MyIsIm9zVmVyc2lvbiI6InBob25lL0hVQVdFSS9IVUFXRUkvQUxOLzMuMC4wLjIyKENhbmFyeTMpL0FMTi1BTDAwL0FMTi1BTDAwLzEyL2RlZmF1bHQvZGVmYXVsdCIsImFwcFZlcnNpb24iOiIxLjAuMCIsImFwcENobE5vIjoiMDQiLCJ0eG5Db2RlIjoiNTA0IiwiY2hsTm8iOiI1MDQiLCJzaWduQXR1cmUiOiJiUnlHUXlNMFZScnVVRk1wWDJmYmFHTEdpdDFWTDZPaHAvUVRmQlhTdGZyZzljSG5XenovTkVVQVIzbXJOc3ZQdUhNaFFoKzJ2ZnRFUXVhOFhTL3BHR3FiWVVJNGlwdFFKWEtEcHo1NFExNlp6L2wxVERJa3N2bUZ1WTBqS1o3TE1jamV4MHNiWFdKbENLSHRWa1JWbTVVb3hSV2VENjJuWFV6WVZ4Y2k2WXM9IiwiZHZJbWVpIjoiNjcyYjNhMzEtMTA2Zi00Njg3LWEyODYtYWI2Yjg1MWE5ZTI5IiwidHhuQm9keSI6IlVVcU9rcDhXN2ZqR2gvV1RYSVJPMHE4T2k0YW5tM0FtbG9mQm9aM0ZhOTVMSFBLRFAraTljQ04rRUREMVZlOUgrRlNVcFgrQkN5T3VFeW53VFh5VHE0WFRGUHVXYXFWbGFqK25WODFyMW1wazF4TEtWaGhQN0NGNjloQXEzUFFYQW4zUnM4ams4Z2wrYmhMUTcxNlM3QjNqSUpwcGRpU2taNkYxbFA1UThkZz0iLCJvc1R5cGUiOiIwMSJ9')
return HttpRequest.request({
url : '504.504001',
method:'post',
params: requestDic123,
data:requestDic123
})
基类:
export const HttpRequest = axios.create({
baseURL: 'https://**.****:8080/SOA/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'},
});
更多关于HarmonyOS鸿蒙Next中axios请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html
demo如下:
postMethod() {
let postUrl: string = 'http://***.***:8848/checkParams';
let simpleForm: rcp.FormFields = {};
simpleForm['txnBody'] = "XXX";
simpleForm['txnHeaderInfo'] = "xxx"
let rcpSession: rcp.Session = rcp.createSession();
let result = rcpSession.post(postUrl, simpleForm)
result.then((res) => {
console.log('res: ' + JSON.stringify(res))
if (res.body) {
let re = this.ArrayBuffer2String(res.body)
console.log('re: ' + re)
}
}).catch((err: BusinessError) => {
console.error(`err: err code is ${err.code}, err message is ${err.message}`);
});
}
ArrayBuffer2String(buf: ArrayBuffer) {
const decoder = util.TextDecoder.create("utf-8");
const str = decoder.decodeWithStream(new Uint8Array(buf));
return str;
}
simpleForm支持动态增减入参对象。请求到后台后,Java侧可以使用IOUtils.toString(request.getReader())解析出响应参数
更多关于HarmonyOS鸿蒙Next中axios请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,axios请求可以通过使用@ohos.net.http模块来实现。@ohos.net.http是鸿蒙系统提供的网络请求库,支持HTTP和HTTPS协议的请求。以下是使用@ohos.net.http进行GET请求的示例代码:
import http from '@ohos.net.http';
// 创建http请求对象
let httpRequest = http.createHttp();
// 发起GET请求
httpRequest.request(
"https://api.example.com/data",
{
method: http.RequestMethod.GET,
header: {
'Content-Type': 'application/json'
}
}, (err, data) => {
if (err) {
console.error(`Request failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info(`Request success, data is ${data.result}`);
}
}
);
在上述代码中,http.createHttp()用于创建一个HTTP请求对象,httpRequest.request()用于发起请求。请求方法可以通过method参数指定,本例中使用了http.RequestMethod.GET。请求头可以通过header参数设置,返回结果在回调函数中处理。
对于POST请求,只需将method参数改为http.RequestMethod.POST,并在extraData参数中传递请求体数据。
在HarmonyOS鸿蒙Next中,使用axios进行网络请求时,首先需确保已安装axios库。创建请求时,可使用axios.get、axios.post等方法,并传入URL和配置参数。处理响应时,通过.then获取数据,.catch捕获错误。注意,鸿蒙系统对网络权限有严格要求,需在config.json中配置相应权限。以下是示例代码:
import axios from 'axios';
axios.get('https://api.example.com/data')
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
确保网络权限配置正确,以保证请求成功执行。

