如何与 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);
  }