开发者

Webservice in GAE, call from a C# client

I have created a webapplication on Google App Engine that gets and sets data in datastore, using Python API and it's working fine.

Now I want to access to that data from a client application, written in C# so I was thinking of creating a webservice in GAE to provide access to the data to my app.

I have started to play a bit with ProtoRPC, and built a "hello" webservice as in the tutorial and now I want to call that webservice from my C# client application.

I have found Jayrock lib which seems to do the job; unfortunately I can't find how to make it work.

Here is my code, based on JayrockRPCClient sample :

JsonRpcClient client = new JsonRpcClient();
client.Url = "http://localhost:8081/hello";
JsonO开发者_如何学Gobject p = new JsonObject { { "my_name", "Joe" } };
Console.WriteLine(client.Invoke("hello.hello", p));

I always get Missing value error.

Can anybody point me to what do I do wrong ?

And as another question, what do you think of that architecture, as there a simplier way to build a webservice in GAE and call it from C#?


Note that while ProtoRPC communicates via JSON, it is not a JSON-RPC service. By using a JSON-RPC client, you are most likely sending messages in the wrong format.

You should be doing a POST to http://localhost:8081/hello.hello with a request body of {"my_name": "Joe"}. Check to make sure your client is sending requests in this format.


Using 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);

For serializing objects, you can use DataContractJsonSerializer.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜