Моно для Android или Java и WCF - PullRequest
       4

Моно для Android или Java и WCF

3 голосов
/ 07 февраля 2012

В настоящее время я использую Mono для Android для разработки мобильного приложения. Я пытался использовать веб-сервис WCF, добавив к нему веб-ссылку, но я не могу сделать такой вызов. Сейчас я собираюсь перекусить и переписать код, используя Java, в котором я не так хорош, как в C #.

У меня есть 2 вопроса:

  1. Как использовать веб-сервис WCF, используя Mono для Android.
  2. Если бы я использовал java, как бы я вызвал метод, который выглядит так, как показано ниже:

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "/MyMethod",
               RequestFormat = WebMessageFormat.Json,
               ResponseFormat = WebMessageFormat.Json)]
    void MyMethod(CustomObjectFromDataContract c_Object);
    

Когда я делаю вызов, я получаю MessageBox, который говорит необработанное исключение System.Net.WebException :. Когда я вхожу в код, я вижу, что ошибка происходит, когда вы звоните

  [System.Web.Services.Protocols.SoapDocumentMethodAttribute    ("http://tempuri.org/IMyService/MyMethod", RequestNamespace="http://tempuri.org/",    ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
    public void MyMethod([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]   CustomObjectFromDataContract c_Object) {
    this.Invoke("MyMethod", new object[] {
                    c_Object});
    }

Вызывается исключение.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Я решил проблему.Вот шаги, чтобы сделать эту работу: 1. Служба должна быть службой RESTful. 2. Вместо ссылки на Localhost (который я использовал в сгенерированном коде) используйте IP-адрес хост-машины.Я думаю, что это потому, что Android работает в Dalvik VM, который, как я подозреваю, имеет локальный хост, отличный от того, который использует мой компьютер Dev.Я сделал это, и теперь мой сервис работает.

0 голосов
/ 14 февраля 2012

Если вы добавите веб-ссылку, то должны быть созданы некоторые классы ссылок, включая клиент.Затем вы можете создать экземпляр сгенерированного клиента и вызвать MyMethod на клиенте.

Итак, если вы используете Visual Studio, просто щелкните правой кнопкой мыши ваш проект MonoDroid> Добавить веб-ссылку и введите URL-адрес вашей службы WCF..

Чтобы вызвать его, вы можете сделать следующее: Я добавил ссылку на сервис с пространством имен Example.WebReference

Затем я бы назвал его следующим образом:

Example.WebReference.ServiceElement client = new Example.WebReference.ServiceElement();
var output = client.MyMethod(parameter);

Надеюсь, это поможет.

...