Angular 5 httpClient версия кода - PullRequest
       6

Angular 5 httpClient версия кода

0 голосов
/ 27 апреля 2018

У меня есть код, который работает для меня в его текущем формате, но я хотел бы изменить его, чтобы вместо него использовался угловой httpClient.

Вот текущий код:

const xhr = new XMLHttpRequest();
const xml = XMLData;
xhr.open('PUT', 'my url here', true);
xhr.setRequestHeader('Content-type', 'text/xml');
xhr.send(xml);
const response = xhr.responseText;

Как я могу сделать это с Angular 5 httpClient PUT?

1 Ответ

0 голосов
/ 27 апреля 2018

Вот как может выглядеть запрос PUT с HttpClient и параметрами. Вам нужно будет преобразовать ваш XMLData, что бы это ни было, в строку. Вопрос SO , предоставленный @Vikas в его комментарии, упоминает несколько библиотек, которые эффективны при разборе XML.

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable()
export class AppService {
  constructor(private http: HttpClient) { }

  doPut() {
    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type': 'text/xml'
      })
    };

    const xml: string = '<foo>1</foo>';

    return this.http.put("/some/url", xml, httpOptions)
      .subscribe(result => console.log(result));
  }
}

Консолидированная версия, если вы предпочитаете:

doPut(xml: string) {    
  return this.http.put("/some/url", xml, { headers: new HttpHeaders({ 'Content-Type': 'text/xml' }) })
    .subscribe(result => console.log(result));
}

HTTP-запрос НЕ будет выполнен, если вы не subscribe() вернете Observable, созданный put() где-нибудь. Я бы дополнительно ознакомился с документацией по обработке ошибок и дополнительным опциям / функциям.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...