2017-12-08 7 views
-1
に入れ、HTTPする方法4

私のスクリプトを:作業を行うものとする角度であればマッチ

updateTask(task:Task){ 
    const body = task; 
    var headers = new HttpHeaders(); 
    headers.set('Content-Type', 'application/javascript'); 
    headers.set('If-Match', task.etag); 
    return this.httpc.put(this.resources+'/'+task.id, body, { headers: headers }); 
} 

誰もがそれを見てもらえて、私はここで間違った何かをしたなら、私にしてください教えてください。私は初心者です:S(バックエンドは私ではないので私はあなたと分かち合えません:/)

httpcはHttpClientです:) あなたの時間と答えを前もってありがとう! ^^。

編集1:

レスポンス> { "エラー": "ヘッダ見つからないか無効です一致した場合、"}

EDIT2:

要求ヘッダー

PUT /app/data/schedule/tasks/42615 HTTP/1.1 
Host: localhost:3000 
Connection: keep-alive 
Content-Length: 438 
Accept: application/json, text/plain, */* 
Origin: http://localhost:3000 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36 
Content-Type: application/json 
Referer: http://localhost:3000/portal/ 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-US,en;q=0.9 
Cookie: sid=f5eb691a56bfa7b6db05083023c5f4caf044db47c2f29f644bc80d7bb7dcf1f3 
+0

エラーは何ですか? 'this.resources'とは何ですか? 'タスク 'を含むものJavaScriptスクリプトですか?私たちがもっと情報を持っていなければ、あなたを助けるのは難しいです。 [最小限の完全で検証可能な例](https://stackoverflow.com/help/mcve)を提供すると考えるべきです。また、ブラウザーで残りのクライアントを使用してクエリ(この場合はput)をテストしてみてください。たとえば、URLの形式が「 – JTejedor

+0

」の場合、私はすでに角をつけずにテストしています。 If-Matchの部分をどこで設定するのか分かりません。これはサービスの機能ですが、タスクは何か、またはURLが正しいかどうかが重要でないため、問題はありません。私はタスクの数instedを言うことができるように簡単な番号を置くことができますが、これは問題自体を変更することはありません。私はIf-Match部分を正しく設定しなかったと思います。 (task.etagは "3a62ca468a0c07d6040b30a5a263a19a"のような単純なエタグ文字列です)。私はこれではっきりしない場合は申し訳ありません:| If-Matchフィールドを設定する必要があるときに、角度付きのputに関するQや例は見つかりませんでした。 –

+0

あなたの問題は 'task.etag'に関連しています。これは、値がnullか無効であるためです。 'If​​-Match'ヘッダーの形式が適切で、適切な値であるかどうかを確認します。 – JTejedor

答えて

0

要約この質問を解決するための大量のコメント。 ヘッダーが正しく設定されていないため、バックエンドはHTTP PUTコマンドを受け入れません。したがって、この問題を解決するには、コード内に両方のヘッダーを正しく追加する必要があります。いくつかの方法があります。私はコンストラクタに基づいて1つを提案しましたが、それ以上のものがあります。コンストラクタに基づい

const header = 
new HttpHeaders({'Content-Type': 'application/javascript', 'If-Match' : task.etag}); 

方法を追加使用(これquestionが示唆するように):

const headers = new HttpHeaders(); 
headers.append('Content-Type', 'application/javascript'); 
headers.append('If-Match', task.etag); 

headerの宣言で行われた変更に注意してください。代わりにを提案します。

+0

ありがとうございました:) –

+0

あなたは大歓迎です! ;-) – JTejedor

関連する問題