【问题标题】:could not access the server using the http post with request parameters in angular 2无法使用带有角度 2 中请求参数的 http 帖子访问服务器
【发布时间】:2018-04-03 13:06:37
【问题描述】:

我需要使用令牌认证登录 我创建了一项服务并尝试在帖子正文中传递参数,但响应为“输入意外结束” 我添加了代码服务和登录组件 每当我调试它总是说一个错误

服务的请求参数是 请求:{"type":"auth","user":"asdf","pass":"asdf"} 响应:{"code":200,"name":"adsf asdf","token":"asdfasdfasdfasdfdsf"}

是否有任何请求参数在标题中的帖子中传递错误

auth.service.ts

import { Injectable } from "@angular/core";
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import 'rxjs/add/observable/of';
import { Observable } from "rxjs/Observable";
import {TokenParam} from "../login/login.component";
import { error } from "util";

@Injectable()

export class AuthService{
    private TokenApi:string ="http://10.102.72.70/Service.aspx";
    currentUser:any
    AccessToken:string="";
    constructor(private _http:Http){ }

    loginUser(userName:string,password:string):Observable<any>{
        let headersForTokenApi = new Headers({
            'content-type':'application/json'});
        //let options= new RequestOptions({headers:headers});
        //let loginInfo = "type=auth?user="+userName+"?   password="+ password

        return this._http.post(this.TokenApi, JSON.stringify({ type: "auth", user: userName, pass: password }), { headers: headersForTokenApi})
        .map(res=> res)


    }
}

login.component.ts

<h1>Login</h1>
<hr>
<div class="col-md-4">
    <form #loginForm="ngForm" (ngSubmit)="login(loginForm.value)" novalidate>
        <div class="form-group">
            <label for="userName">User Name:</label>

            <input id="userName" type="text" [(ngModel)]="userName" name="userName" required class="form-control"/>
        </div>
        <div class="form-group">
            <label for="password">Password:</label>

            <input id="password" type="password" [(ngModel)]="password" name="password" required class="form-control" />
        </div>
        <span>
            <button type="submit" class="btn btn-primary" [disabled]="loginForm.invalid">Submit</button>
        </span>
        <button type="button" class="btn btn-default" (click)="cancel()">Cancel</button>
    </form>
    <br>
    <div *ngIf="loginInvalid" class="alert alert-danger">Invalid Login Info</div>
</div>

login.component.ts

import { Component } from "@angular/core";
import { AuthService } from '../services/auth.service';

@Component({
    selector:"app-login",
    templateUrl:"login.component.html"
})

export class LoginComponent{
    loginInvalid = false;
    tokenParams:TokenParam 
    userName:string
    password:string

    constructor(private authService: AuthService) {

    }
    login(formValues) {
        console.log(formValues);
        this.authService.loginUser(formValues.userName, formValues.password).subscribe(
            data=>{
                this.tokenParams=data;
                this.authService.AccessToken=this.tokenParams.token;
                console.log(this.tokenParams)
            }
        )

    } 


}

export class TokenParam {
    code: string
    token: string
}
export class ILogin
    { type:string= "auth"
     user:string
     pass: string }

【问题讨论】:

    标签: angular2-services


    【解决方案1】:

    您可能不需要在 this.http.post 调用中对数据进行字符串化。 Angular post 方法已经处理好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-09
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      相关资源
      最近更新 更多