this.fetch是一个方法,用于发起http请求。
fetch方法模拟浏览器环境中Fetch API,但要简化一些。fetch方法调用java.net.HttpURLConnection类发起请求。
Syntax
const resPromise = fetch(url, options);
Parameters
-
url
String
要获取资源的 URL。
-
options
Object
一个配置项对象,包括对请求的设置。可选的参数有:method, headers, body
Returns
-
Promise
resolve 时回传 Response 对象。
Examples
fetch('http://hostname/resource').then((res)=>{
return res.text();
}).then((text)=>{
console.log(`响应的文本信息是:${text}`);
});
fetch('http://hostname/resource', {
headers: {
"Authorization": "xxxxxxxxxxxxx"
}
}).then((res)=>{
return res.json();
}).then((json)=>{
console.log(`响应的json对象是:${JSON.stringify(json, null, '\t')}`);
});
fetch('http://hostname/resource', {
method: 'post',
body: '{"postData": "this is post data"}',
headers: {
"Content-Type": "application/json; charset=UTF-8"
}
}).then((res)=>{
return res.json();
}).then((json)=>{
console.log(`响应的json对象是:${JSON.stringify(json, null, '\t')}`);
});
fetch('http://hostname/resource').then((res)=>{
return res.blob();
}).then((blob)=>{
//获取到 blob,实际上是一个(java.io.ByteArrayInputStream)对象
});
fetch('http://hostname/resource').then((res)=>{
return res.arrayBuffer();
}).then((arrayBuffer)=>{
//获取到 arrayBuffer对象
});
fetch('http://hostname/resource').then((res)=>{
if (!res.ok){
throw new Error("response was not OK");
}
return res.json();
}).then((json)=>{
console.log(`响应的json对象是:${JSON.stringify(json, null, '\t')}`);
}).catch((e)=>{
//处理请求错误
});
fetch('http://hostname/resource').then((res)=>{
res.ok //请求是否成功
res.status //请求响应的状态码
res.statusText //请求响应的状态文本
res.headers //响应头
res.error //java.net.HttpURLConnection的错误流
res.connection //java.net.HttpURLConnection对象
res.text() //响应内容文本
res.json() //响应内容json对象
res.blob() //响应内容Response流(java.io.ByteArrayInputStream)
res.arrayBuffer() //响应内容Response的ArrayBuffer对象
});
try{
const res = await fetch('http://hostname/resource');
if (res.ok){
const json = await res.json();
//获取到json对象
}else{
log.error(`请求出现错误:${res.statusText}`);
}
}catch(e){
log.error(`请求出现错误:${e.message}`);
}