* docs: remove implicit 'any' and 'Object' types from the docs * docs: more docs improvements, remove all remaining empty interfaces * chore: update tests for better types
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			2.2 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			2.2 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# net
 | 
						|
 | 
						|
> Issue HTTP/HTTPS requests using Chromium's native networking library
 | 
						|
 | 
						|
Process: [Main](../glossary.md#main-process)
 | 
						|
 | 
						|
The `net` module is a client-side API for issuing HTTP(S) requests. It is
 | 
						|
similar to the [HTTP](https://nodejs.org/api/http.html) and
 | 
						|
[HTTPS](https://nodejs.org/api/https.html) modules of Node.js but uses
 | 
						|
Chromium's native networking library instead of the Node.js implementation,
 | 
						|
offering better support for web proxies.
 | 
						|
 | 
						|
The following is a non-exhaustive list of why you may consider using the `net`
 | 
						|
module instead of the native Node.js modules:
 | 
						|
 | 
						|
* Automatic management of system proxy configuration, support of the wpad
 | 
						|
  protocol and proxy pac configuration files.
 | 
						|
* Automatic tunneling of HTTPS requests.
 | 
						|
* Support for authenticating proxies using basic, digest, NTLM, Kerberos or
 | 
						|
  negotiate authentication schemes.
 | 
						|
* Support for traffic monitoring proxies: Fiddler-like proxies used for access
 | 
						|
  control and monitoring.
 | 
						|
 | 
						|
The API components (including classes, methods, properties and event names) are similar to those used in
 | 
						|
Node.js.
 | 
						|
 | 
						|
Example usage:
 | 
						|
 | 
						|
```javascript
 | 
						|
const { app } = require('electron')
 | 
						|
app.on('ready', () => {
 | 
						|
  const { net } = require('electron')
 | 
						|
  const request = net.request('https://github.com')
 | 
						|
  request.on('response', (response) => {
 | 
						|
    console.log(`STATUS: ${response.statusCode}`)
 | 
						|
    console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
 | 
						|
    response.on('data', (chunk) => {
 | 
						|
      console.log(`BODY: ${chunk}`)
 | 
						|
    })
 | 
						|
    response.on('end', () => {
 | 
						|
      console.log('No more data in response.')
 | 
						|
    })
 | 
						|
  })
 | 
						|
  request.end()
 | 
						|
})
 | 
						|
```
 | 
						|
 | 
						|
The `net` API can be used only after the application emits the `ready` event.
 | 
						|
Trying to use the module before the `ready` event will throw an error.
 | 
						|
 | 
						|
## Methods
 | 
						|
 | 
						|
The `net` module has the following methods:
 | 
						|
 | 
						|
### `net.request(options)`
 | 
						|
 | 
						|
* `options` (ClientRequestConstructorOptions | String) - The `ClientRequest` constructor options.
 | 
						|
 | 
						|
Returns [`ClientRequest`](./client-request.md)
 | 
						|
 | 
						|
Creates a [`ClientRequest`](./client-request.md) instance using the provided
 | 
						|
`options` which are directly forwarded to the `ClientRequest` constructor.
 | 
						|
The `net.request` method would be used to issue both secure and insecure HTTP
 | 
						|
requests according to the specified protocol scheme in the `options` object.
 |