簡體   English   中英

如何使用打字稿通過參數發送 HTTP POST REQUEST

[英]How to send a HTTP POST REQUEST by parameters using typescript

我想通過類似的 param 發送一個 POST 請求:

http://127.0.0.1:9000/api?command={"command":"value","params":{"key":"value","key":"value","key":"value","key":value,}}

我試圖這樣做,但沒有奏效:

    let command: HttpParams = new HttpParams();
    let params: HttpParams = new HttpParams();

    command = command.append('command', 'value');

    params = params.append('key', value);
    params = params.append('key', value);
    params = params.append('key', value);
    params = params.append('key', value);
    command = command.append('params', params.toString());


    this.httpClient.post('/api?', null, {
        params: command
    });


The error is: 500 (Internal Server Error)

請你幫助我好嗎?

服務端給出的代碼500有如下描述:

超文本傳輸​​協議 (HTTP) 500 內部服務器錯誤服務器錯誤響應代碼表示服務器遇到了阻止其完成請求的意外情況。

我認為您的服務器正在嘗試處理您的請求。 所以在你的代碼中刪除“.toString()”。

command = command.append('params', params.toString());

然后嘗試 (Ctrl + shift + Supr) 查看 chrome 開發工具,然后轉到“網絡”選項卡。 您將看到所有來電。 檢查您的請求是否具有您想要的格式。

解決辦法是:

1) 首先我創建包含命令信息和參數的對象。 類似的:

const object = {
  command: 'command description',
  params: {
    properti: value,
    properti: value,
    properti: value,
  }
};

2) 之后,我使用 JSON.stringify() 將此對象轉換為 json:

// convert object to json data
const jsonData = JSON.stringify(object);

3)第二步之后,我將json數據封裝在HttpParams中

// encapsulate json data in http param
let httpParams: HttpParams = new HttpParams();
httpParams = httpParams.append('command', automationTestTriggerJson);

4)最后,我使用httpClient通過參數發送POST。 類似的:

this.httpClient.post<T>(url, body, {
        httpParams: parameters
});

注意:我不知道這是否是更好的解決方案,但它對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM