【问题标题】:HttpParams doesn't work in angular getting 502 errorHttpParams 在 Angular 中不起作用,出现 502 错误
【发布时间】:2020-04-18 10:36:02
【问题描述】:

我正在使用角度 8

  • 我在通过 Post 向服务器发送数据时使用 HttpParams 方法
  • 我收到 502 状态码错误,通过 HttpPrams 发送数据

错误

HttpErrorResponse {headers: HttpHeaders, status: 502, statusText: "Bad 网关”,网址: "http://central-portal-app-alb-1565375077.ap-south-1.elb.amazonaws.com/api/v1/user/login", ok: false, …} headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate:null,lazyInit:ƒ} 状态:502 statusText:“坏网关”

这是我的服务文件代码

service.ts

@Injectable()
export class RestService {
  baseUrl = environment.baseUrl;
  login =  this.baseUrl + 'user/login';


  constructor(private http: HttpClient) {

  }

userlogin(userid, smpassword) {

const params = new HttpParams()
.set('user_id', userid)
.set('sm_password', smpassword);

console.log(params);


return this.http.post(this.baseUrl + 'user/login',  params.toString(),
{
  headers: new HttpHeaders({
   'Content-Type' : 'application/json'
  })
}
);

login.component.ts

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  Userlogin: FormGroup;

  constructor(private route: Router , private fb: FormBuilder , private rest: RestService) {
        this.Userlogin = this.fb.group({
          email : ['', [Validators.required , Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$') ]],
          password : ['', [Validators.required , Validators.minLength(5) ] ]
        });
  }

  // , Validators.required

  ngOnInit() { }


  login() {

    const email =  this.Userlogin.get('email').value;
    const password = this.Userlogin.get('password').value;
    this.rest.userlogin(email, password).subscribe(
      result => {
        console.log(result);
      }
    );

    //  this.route.navigateByUrl('/pendingapproval');

  }

【问题讨论】:

  • 您将内容类型设置为 application/json,但实际上并未发送 JSON。
  • 您是在尝试发送 JSON 还是 URL 编码的数据?目前您的请求在内部不一致。您是否查看了您实际提出的请求?

标签: angular angular8 angular-httpclient


【解决方案1】:

我不确定,但请检查一下......

这应该是您的服务文件代码

userlogin(userid, smpassword) {
const params = new HttpParams()
.set('user_id', userid)
.set('sm_password', smpassword);
console.log(params);    
return this.http.post(this.baseUrl+'user/login',JSON.stringify(params)).pipe(map((res) => {
  return res;
}));

}

这应该是你的 login.component.ts

     login() {
        const email =  this.Userlogin.get('email').value;
        const password = this.Userlogin.get('password').value;
        this.rest.userlogin(email, password).subscribe((result)=> {
        result = JSON.Parse(result)
            console.log(result);
          }
        );

【讨论】:

    【解决方案2】:

    尝试访问浏览器上的 api 端点,检查 URL 是否正确,并可能在您的标头中包含访问控制允许来源

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 2015-06-28
      • 2018-01-09
      • 2017-06-25
      • 2016-02-16
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多