「GET」HTTP リクエストでの JSON の使用私はデータ検索エンジンとのインターフェースに取り組んでいます。次のような POST リクエストを使用して、問題なくジョブを送信できます。
request = 新しい HTTP リクエスト (
url( "http://fc8tdbitmapconvs07:11111/daas/" ),
メソッド( "POST" ),
Json( テキストファイルのロード( ctfn ) )
);
データ = リクエスト << 送信;
「データ」にはサーバーからの応答が含まれており、すべて問題ありません。
-------------------------------------------
ただし、「GET」リクエストで実行中のジョブのステータスを確認しようとすると、json がサーバーへの HTTP リクエストに含まれません。
試み#1:
request2 = 新しい HTTP リクエスト (
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
メソッド( "GET" ),
headers( {"Content-Type:application/json"} ), // カスタム ヘッダーを追加します
Json( テキストファイルのロード( ctfn2 ) )
);
data2 = request2 << 送信;
試み#2
request2 = 新しい HTTP リクエスト (
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
メソッド( "GET" ),
headers( {"Content-Type:application/json"} ) // カスタム ヘッダーを追加します
);
request2 < data2 = request2 << 送信;
どちらの場合も、JSON の読み込みに失敗します。ヘッダー情報は問題なくサーバーに送信されますが、リクエスト内の JSON があるべき場所は空です。私は何が欠けていますか?
ありがとう
Re: "GET" HTTP リクエストで JSON を使用するこの機能 (JSON の送信中に「GET」を使用) は、JMP 15 で利用できるはずです。
Re: "GET" HTTP リクエストで JSON を使用する最後にもう 1 つ (または 2 つ)。ジョブ番号などをクエリ文字列パラメーターとして渡すことができますか (または、JSON をリクエスト ヘッダーに埋め込むこともできます)。
そして2、必ずウィッシュリストに「ボディ」付きのゲットを追加してください。そうすれば、私たちは追跡することができ、そこにいるときに通知を受けることができます.
ありがとう。
-ブライアン
Re: "GET" HTTP リクエストで JSON を使用するブライオン、
迅速な返信ありがとうございます。私は REST API の開発者と直接協力しており、JSON を GET 要求にパッケージ化することは、データを要求する方法として文書化されています。仕様が明確ではなく、JSON を GET リクエストにパッケージ化することは、一部の CS カリキュラムで教えられていることです。この例では、ジョブがまだ完了していないことを示すコード (ポーリングと応答) またはジョブが完了したことを示すコード、データ ファイル名、およびこれらのファイルを含む zip ファイルを返すジョブ番号を渡すことが考えられます。 .JMP 15 に何かを組み込むことができれば、非常に役立ちます。
Re: "GET" HTTP リクエストで JSON を使用するHTTP 仕様を読んだ後、GET を使用してデータを送信することはお勧めできず、サーバーは通常それを無視することがわかりました。
関連する HTTP 仕様にリンクしている、stackoverflow に関するこのディスカッションを見つけました。
この記述は正しいですか? HTTP GET メソッドには常にメッセージ本文がありません
それは基本的に、いくつかのカスタムWebサービス実装がそれを使用する可能性があり、仕様はそれについてかなり漠然としています。
必要があれば、JMP 15 の何かを手に入れることができるかもしれません。
このサービスと対話する他の方法はありますか?
Re: "GET" HTTP リクエストで JSON を使用するJSON はリクエスト ヘッダーに埋め込まれていますか? (Dropbox、Onedrive、および他の多くのものがそうしています)
コンテンツが JSON コンテンツ タイプで送信される POST/PATCH/PUT で使用される HTTP 要求の JSON 引数。それは「提出」アクションです。
GET は「読み取り」であり、引数はクエリ文字列であるか、リクエスト ヘッダーに埋め込まれています。
Re: "GET" HTTP リクエストで JSON を使用するブライアン・ブーン、
速やかなご返信ありがとうございます。 を書いた開発者によると、
REST API JSON が必要です。 これがPythonの作業バージョンです
status_info = get(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真実}
.json()
>> 赤色の長い数字はジョブ番号で、もちろん異なります。 これ
ビットは、Python ノートブックで実行するか、JMP 内で
以下のJSL。 しかし、HTTP Request プロトコルで動作させるにはどうすればよいでしょうか?
ありがとう!
-------------------------------------------------- -------------------------------------------------- -------------------------
Python Init();
Python 実行(
{バツ}、
{ステータス情報}、
"
getpass のインポート
from io import BytesIO
from time import sleep
パンダを pd としてインポート
from requests import get、post
status_info = get(
'http://fc8tdbitmapconvs07:11111/daas/status/',
json={'_id': '5cc311a97925b1000ce4fd54', 'include_complete':
真実}
.json()
"
);
Python Term();
Re: "GET" HTTP リクエストで JSON を使用する"得る"
と「投稿」
2 つの異なる HTTP リクエスト メソッド ( https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods )
「GET」は通常、サーバーからデータを読み取ります。
「投稿」は通常、サーバーにデータを送信します。
これらは、JMP/JSL の外部で定義された Web サーバー/Web サービスです。
最初の例では、データを「http://fc8tdbitmapconvs07:11111/daas/」に「POST」(別名送信)し、サービスにそのことを伝えていますctfn使用する JSON コンテンツです。
Attempt#1 の目標は、実行中のジョブのステータスを「GET」することです。 サービスが何であるかはわかりませんが、エンドポイントが「http://fc8tdbitmapconvs07:11111/daas/status/」の場合、次のようなものが必要になります。
request2 = New HTTP Request(
url( "http://fc8tdbitmapconvs07:11111/daas/status/" ),
Method( "GET" )
);
data2 = request2 << Send;
GET ではサーバーに何も送信しないためです。
さらに、「Content-Type:application/json」は、送信するコンテンツを記述するために使用されます (データを受信しており、おそらく Web サーバーによって無視されるため、GET では適切ではありません)。
コンテンツ タイプ:ヘッダーは送信するものです (これらは HTTP リクエストによって自動的に設定されます)
受け入れる:ヘッダーは、必要な Web サーバーに伝えるものです。
request << Get MIME Type
Web サーバーが何を送信したかがわかります。 (ほとんどの Web サーバーはこれを設定しますが、空にすることもできます)
それも覚えておいてください。
request << Send
できるよ
request << Get Status; //this is the http status code
request << Get Status Message; //this is the message from the server
Web サービスが出力するエラー メッセージを調査します。
HTH