@capacitor-community/http
Capacitor community plugin for native HTTP requests, file download/uploads, and cookie management.
Maintainer | GitHub | Social |
---|---|---|
Max Lynch | mlynch | @maxlynch |
Thomas Vidas | thomasvidas | @thomasvidas |
npm install @capacitor-community/http
npx cap sync
On iOS, no further steps are needed.
On Android, register the plugin in your main activity:
import com.getcapacitor.plugin.http.Http;
public class MainActivity extends BridgeActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initializes the Bridge
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
// Additional plugins you've installed go here
// Ex: add(TotallyAwesomePlugin.class);
add(Http.class);
}});
}
}
No configuration required for this plugin
To use the plugin while fully supporting the web version, import and use it like this:
// Must import the package once to make sure the web support initializes
import '@capacitor-community/http';
import { Plugins } from '@capacitor/core';
// Example of a GET request
const doGet = () => {
// Destructure as close to usage as possible for web plugin to work correctly
// when running in the browser
const { Http } = Plugins;
const ret = await Http.request({
method: 'GET',
url: 'https://example.com/my/api',
headers: {
'X-Fake-Header': 'Max was here'
},
params: {
'size': 'XL'
}
});
};
// Example of a POST request. Note: data
// can be passed as a raw JS Object (must be JSON serializable)
const doPost = () => {
const { Http } = Plugins;
const ret = await Http.request({
method: 'POST',
url: 'https://example.com/my/api',
headers: {
'X-Fake-Header': 'Max was here',
'Content-Type': 'application/json'
},
data: {
foo: 'bar',
cool: true
}
});
}
const setCookie = async () => {
const { Http } = Plugins;
const ret = await Http.setCookie({
url: this.apiUrl('/cookie'),
key: 'language',
value: 'en'
});
}
const deleteCookie = async () => {
const { Http } = Plugins;
const ret = await Http.deleteCookie({
url: this.apiUrl('/cookie'),
key: 'language',
});
}
const clearCookies = async () => {
const { Http } = Plugins;
const ret = await Http.clearCookies({
url: this.apiUrl('/cookie'),
});
}
const getCookies = async () => {
const { Http } = Plugins;
const ret = await Http.getCookies({
url: this.apiUrl('/cookie')
});
console.log('Got cookies', ret);
this.output = JSON.stringify(ret.value);
};
const downloadFile = async () => {
const { Http } = Plugins;
const ret = await Http.downloadFile({
url: 'https://example.com/path/to/download.pdf',
filePath: 'document.pdf',
fileDirectory: FilesystemDirectory.Downloads
});
if (ret.path) {
const read = await Filesystem.readFile({
path: 'download.pdf',
directory: FilesystemDirectory.Downloads
});
// Data is here
}
}
const uploadFile = async () => {
const { Http } = Plugins;
const ret = await Http.uploadFile({
url: 'https://example.com/path/to/upload.pdf',
name: 'myFile',
filePath: 'document.pdf',
fileDirectory: FilesystemDirectory.Downloads
});
}
Coming soon
Thanks goes to these wonderful people (emoji key):
Daniel Sogl π |
Priyank Patel π» |
Max Lynch π» |
Falk Schieber π |
Andy Sousa π» |
Thomas Vidas π» π§ |
This project follows the all-contributors specification. Contributions of any kind welcome!