2

Python API を使用して、Google App Engine でデータストアのデータを取得および設定する Web アプリケーションを作成しましたが、正常に動作しています。
C# で記述されたクライアント アプリケーションからそのデータにアクセスしたいので、アプリにデータへのアクセスを提供するために GAE で Webサービスを作成することを考えていました。

私はProtoRPCで少し遊び始め、チュートリアルのように "hello" Web サービスを作成しました。今度は C# クライアント アプリケーションからその Web サービスを呼び出したいと思います。仕事をしていると思われるJayrock
lib を 見つけました。残念ながら、私はそれを機能させる方法を見つけることができません。

JayrockRPCClient サンプルに基づく私のコードは次のとおりです。

JsonRpcClient client = new JsonRpcClient();
client.Url = "http://localhost:8081/hello";
JsonObject p = new JsonObject { { "my_name", "Joe" } };
Console.WriteLine(client.Invoke("hello.hello", p));

私はいつも得るMissing value error

誰かが私が間違っていることを指摘できますか?

別の質問として、GAE で Web サービスを構築して C# から呼び出す簡単な方法があるため、そのアーキテクチャについてどう思いますか?

4

2 に答える 2

1

使用WebClient:

var uri = new Uri("http://localhost:8081/hello.hello");
var data = "{\"my_name\":\"Joe\"}";

var wc = new WebClient();
wc.Headers["Content-type"] = "application/json";
wc.Encoding = Encoding.UTF8;
var response = wc.UploadString(uri, data);

オブジェクトをシリアル化するには、 を使用できますDataContractJsonSerializer

于 2011-05-07T15:20:18.180 に答える
1

ProtoRPC は JSON 経由で通信しますが、JSON-RPCサービスではないことに注意してください。JSON-RPC クライアントを使用すると、メッセージを間違った形式で送信する可能性が高くなります。

http://localhost:8081/hello.helloのリクエストボディでPOST を実行する必要があり{"my_name": "Joe"}ます。クライアントがこの形式でリクエストを送信していることを確認してください。

于 2011-05-07T11:56:29.090 に答える