angular http сообщение с «Content-Type»: «application / x- www-form-urlencoded» и responseType: «text» - PullRequest
0 голосов
/ 28 марта 2020

Вот моя angular информация о клике:

Angular CLI: 7.3.9
Node: 10.19.0
OS: win32 x64
Angular: 7.2.16
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.13.9
@angular-devkit/build-angular     0.13.9
@angular-devkit/build-optimizer   0.13.9
@angular-devkit/build-webpack     0.13.9
@angular-devkit/core              7.3.9
@angular-devkit/schematics        7.3.9
@angular/cdk                      7.3.7
@angular/cli                      7.3.9
@angular/material                 7.3.7
@ngtools/webpack                  7.3.9
@schematics/angular               7.3.9
@schematics/update                0.13.9
rxjs                              6.5.4
typescript                        3.2.4
webpack                           4.29.0    

У меня есть способ получить билет с сервера.

getTGT(username, password): Observable<string> {
    const loginUrl = this._constants.getLoginUrl();

    let body = new URLSearchParams();
    body.set('username', username.trim());
    body.set('password', password);

    const options = {
        headers: new HttpHeaders({'Content-Type': 'application/x-www-form-urlencoded'}),
        responseType: 'text'
    };

    return this.http.post(loginUrl, body.toString(), options)
        .map((res) => {
            return res.toString();
        })
        .catch(this.handleError);
}

Но у меня компиляция скрипта типа ошибка:

Тип аргумента {заголовки: HttpHeaders, responseType: string} нельзя назначить параметру типа {заголовки ?: HttpHeaders | {[p: строка]: строка | string []}, наблюдаем ?: "body", params ?: HttpParams | {[p: строка]: строка | string []}, reportProgress ?: boolean, responseType: "arraybuffer", withCredentials ?: boolean}

как исправить эту ошибку типа? Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Я решил решить эту проблему с помощью API выборки:

`

import { from } from 'rxjs';

fetchTgtUrl(username, password) {
    let loginUrl = '' + this._constants.getLoginUrl();
    let bodyString = 'username=' + username.trim() + '&password=' + encodeURIComponent(password);
    return fetch(loginUrl, {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: bodyString
    }).then(res => res.text());
}
getTGT(username, password): Observable<string> {
    let tgt = this.fetchTgtUrl(username, password);
    return from(tgt);
}

`

0 голосов
/ 28 марта 2020

Добавить responseType в самой конструкции HttpHeaders

Ссылка: https://angular.io/api/common/http/HttpRequest#constructor ()

 const options = {
        headers: new HttpHeaders({'Content-Type': 'application/x-www-form- 
        urlencoded', 'responseType': 'text'}),
    };
 return this.http.post(loginUrl, body.toString(), options)
        .map((res) => {
            return res.toString();
        })
        .catch(this.handleError);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...