如何与 Angular 进行通信 Http 和 ip 地址
How to communicate with Angular Http and ip address
我有一个 android 设备,我正在尝试制作一个可以与之通信的网络应用程序(发送 json 等)。
我创建了一个 api 服务,该服务将发送 post 或 HttpRequest,但我卡住了,因为我遇到错误请求和连接失败等错误。
我的笔记本和 android 都无线连接到同一个 wifi,android 设备连接到静态 IP 地址。
这是我的 api 服务:
public post<T>(endpoint: string, params = null, headers?): Observable<T> {
return this.http.post<T>('http://' + endpoint, params, headers ? headers : {headers: this.getRequestHeaders()})
.pipe(httpRetry(), tap(null, err => this.interceptError(err)));
}
public request<T>(method, endpoint: string, data, headers?: HttpHeaders) {
return this.http.request<T>(method, endpoint, {
body: data,
headers: headers
});
}
这是我使用这些函数的组件:
sendRequest() {
this.apiService.request('string', this.basic.controls.ENDPOINT.value, this.selectedFile, this.getHeaders(true))
.subscribe((response: HttpResponse<any>) => this.response = response);
}
sendPost() {
this.apiService.post(this.basic.controls.ENDPOINT.value, this.selectedFile, this.getHeaders(true))
.subscribe((response: HttpResponse<any>) => this.response = response);
}
getHeaders( isMultipart: boolean = false,
acceptableMimeType: string = ApiService.DEFAULT_ACCEPTABLE_MIME_TYPE,
anonymous: boolean = false): HttpHeaders {
const Authorization = btoa(this.basic.controls.PASSWORD.value + this.basic.controls.USERNAME.value);
const headers = {
'X-Host-Override': '192.168.0.42',
'Content-Type': 'application/json',
'Content-Length': '120', // TODO add logic for correct content length
'Authorization': Authorization
};
if (!isMultipart) {
headers['Content-Type'] = 'application/json';
}
return new HttpHeaders(headers);
}
端点设置为 192.168.0.42,端口设置为 8080(我也不知道要使用什么端口号)。
他们还发送了一个 json 文件,因此是 this.selected 文件。
这是我发送请求的逻辑:
const endpoint = 192.168.0.42:8200
const requestJson = someJson.json
this.apiService.post(endpoint, requestJson).subscribe(data => do something with data)
public post<T>(endpoint: string, params = null): Observable<T> {
return this.http.post<T>('http://' + endpoint, params, {headers: this.getRequestHeaders()})
.pipe(httpRetry(), tap(null, err => this.interceptError(err)));
}
这就是我得到 headers:
的方式
public getRequestHeaders(
isMultipart: boolean = false,
acceptableMimeType: string = ApiService.DEFAULT_ACCEPTABLE_MIME_TYPE,
anonymous: boolean = false
): HttpHeaders {
const headers = {
'Accept': acceptableMimeType,
observe: 'response'
};
if (!isMultipart) {
headers['Content-Type'] = 'application/json';
}
if (!anonymous) {
headers['Authorization'] = 'Basic ' + btoa(JSON.parse(localStorage.getItem('connectionData')).USERNAME + ':' + JSON.parse(localStorage.getItem('connectionData')).PASSWORD);
}
return new HttpHeaders(headers);
}
我有一个 android 设备,我正在尝试制作一个可以与之通信的网络应用程序(发送 json 等)。
我创建了一个 api 服务,该服务将发送 post 或 HttpRequest,但我卡住了,因为我遇到错误请求和连接失败等错误。 我的笔记本和 android 都无线连接到同一个 wifi,android 设备连接到静态 IP 地址。
这是我的 api 服务:
public post<T>(endpoint: string, params = null, headers?): Observable<T> {
return this.http.post<T>('http://' + endpoint, params, headers ? headers : {headers: this.getRequestHeaders()})
.pipe(httpRetry(), tap(null, err => this.interceptError(err)));
}
public request<T>(method, endpoint: string, data, headers?: HttpHeaders) {
return this.http.request<T>(method, endpoint, {
body: data,
headers: headers
});
}
这是我使用这些函数的组件:
sendRequest() {
this.apiService.request('string', this.basic.controls.ENDPOINT.value, this.selectedFile, this.getHeaders(true))
.subscribe((response: HttpResponse<any>) => this.response = response);
}
sendPost() {
this.apiService.post(this.basic.controls.ENDPOINT.value, this.selectedFile, this.getHeaders(true))
.subscribe((response: HttpResponse<any>) => this.response = response);
}
getHeaders( isMultipart: boolean = false,
acceptableMimeType: string = ApiService.DEFAULT_ACCEPTABLE_MIME_TYPE,
anonymous: boolean = false): HttpHeaders {
const Authorization = btoa(this.basic.controls.PASSWORD.value + this.basic.controls.USERNAME.value);
const headers = {
'X-Host-Override': '192.168.0.42',
'Content-Type': 'application/json',
'Content-Length': '120', // TODO add logic for correct content length
'Authorization': Authorization
};
if (!isMultipart) {
headers['Content-Type'] = 'application/json';
}
return new HttpHeaders(headers);
}
端点设置为 192.168.0.42,端口设置为 8080(我也不知道要使用什么端口号)。 他们还发送了一个 json 文件,因此是 this.selected 文件。
这是我发送请求的逻辑:
const endpoint = 192.168.0.42:8200
const requestJson = someJson.json
this.apiService.post(endpoint, requestJson).subscribe(data => do something with data)
public post<T>(endpoint: string, params = null): Observable<T> {
return this.http.post<T>('http://' + endpoint, params, {headers: this.getRequestHeaders()})
.pipe(httpRetry(), tap(null, err => this.interceptError(err)));
}
这就是我得到 headers:
的方式public getRequestHeaders(
isMultipart: boolean = false,
acceptableMimeType: string = ApiService.DEFAULT_ACCEPTABLE_MIME_TYPE,
anonymous: boolean = false
): HttpHeaders {
const headers = {
'Accept': acceptableMimeType,
observe: 'response'
};
if (!isMultipart) {
headers['Content-Type'] = 'application/json';
}
if (!anonymous) {
headers['Authorization'] = 'Basic ' + btoa(JSON.parse(localStorage.getItem('connectionData')).USERNAME + ':' + JSON.parse(localStorage.getItem('connectionData')).PASSWORD);
}
return new HttpHeaders(headers);
}