Веб-сервис в GAE, звонок с клиента C#

Я создал веб-приложение на Google App Engine, которое получает и устанавливает данные в хранилище данных, используя Python API, и оно работает нормально.
Теперь я хочу получить доступ к этим данным из клиентского приложения, написанного на C#, поэтому я думал о создании веб- службы в GAE для предоставления доступа к данным для моего приложения.

Я начал немного играть с ProtoRPC и создал "привет" веб-сервис, как в учебнике, и теперь я хочу вызвать этот веб-сервис из моего клиентского приложения на C#.
Я нашел 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 и вызвать его из C#?

2 ответа

С помощью 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,

Обратите внимание, что хотя ProtoRPC взаимодействует через JSON, это не служба JSON-RPC. Используя JSON-RPC-клиент, вы, скорее всего, отправляете сообщения в неправильном формате.

Вы должны делать POST, чтобы http://localhost:8081/hello.hello с телом запроса {"my_name": "Joe"}, Убедитесь, что ваш клиент отправляет запросы в этом формате.

Другие вопросы по тегам