【问题标题】:Sending Request from Angular to Java Servlet从 Angular 向 Java Servlet 发送请求
【发布时间】:2018-01-24 12:59:04
【问题描述】:

我有一个 Angular 应用程序和一个 java servlet 后端。我需要做的是从角度发送 httpRequest 到后端。我正在使用 httpClient 来做到这一点。
我的服务.ts

import { Injectable, EventEmitter } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class MyServices {

  constructor(private httpClient: HttpClient) {}
  public getTables(num: number) {
    return this.httpClient.post("url/to/backend",JSON.stringify({number: num}));
  }
}

在我的 servlet 中,我收到了请求,但是当我使用 requset.getParameter 获取数值时,它返回 null。我确定当我阅读它返回的请求正文时:

"{"number":3}"

当我使用 request.getParametersName 时,它​​再次返回 null。有谁知道我做错了什么?我是否使用了正确的工具来发送 httpRequest?

【问题讨论】:

  • 你为什么要把身体串起来?
  • @mast3rd3mon 我尝试在不对主体进行字符串化的情况下这样做,但没有任何区别。
  • 你能解决吗?我遇到了完全相同的问题,情况完全相同。通过getReader() 阅读正文会显示JSON,但使用getParameter() 我似乎无法获得它们。谢谢。

标签: java angular servlets httprequest angular-httpclient


【解决方案1】:

尝试将代码交换为 return this.httpClient.post("url/to/backend",{'number': num});,因为如果 Web 处理程序需要 json 正文,则不应将正文字符串化

【讨论】:

  • 你试过注销整个身体吗?而不仅仅是价值是什么?
  • 我试过了。我可以使用 getReader() 注销整个正文。正如我在原始问题中所说,它记录了 "{"number":3"}" 。我可以使用它,但我认为这不是很好的做法。
  • 我没试过。您的意思是使用 Gson 解析它吗?
  • 好吧,你说记录的值有引号,这表明它是一个字符串,而不是 json
  • 我最好的猜测是,当您删除 stringify 或 java 服务器代码将其强制为字符串时,应用程序没有正确重建
【解决方案2】:

不是这方面的专家,但是当您在 post 方法中发送请求时,数据在正文中。在您的 servlet 中,您正在请求参数中检查它。我认为您必须检查请求正文。我使用spring框架而不是servlet,所以不能提供确切的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2018-02-20
    相关资源
    最近更新 更多