Взаимодействие со службой, предоставляемой через HTTP-запрос - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть сервис myService.svc.Этот сервис предоставляется с помощью привязки webHttpBinding.Причина в том, что мне нужно иметь возможность вызывать службу с iPhone и с помощью интерфейса JQuery.Насколько я понимаю, WP7 напрямую поддерживает только BasicHttpBinding, который опирается на сообщения SOAP.К сожалению, SOAP не поддерживается напрямую на iPhone.

Мой вопрос заключается в том, могу ли я использовать WebClient или HttpWebRequest для взаимодействия со службой, которая использует webHttpBinding.Концептуально я верю, что это сработает, но реализация как бы намекает на меня.У меня определена следующая служба:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(IncludeExceptionDetailInFaults = false)]
public class myService : ImyService
{
  public MyServiceResult MyMethod(string p1, string p2)
  {
    try
    {
      // Do stuff
      MyResponseObject r = new MyResponseObject();
      r.Property1 = DateTime.Now;
      r.Property2 = "Some other data";
      return r;
    }
    catch (Exception ex)
    {
      return null;
    }
  }
}

[ServiceContract]
public interface ImyService
{
  [OperationContract]
  [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped)]
  MyServiceResult MyMethod(string p1, string p2);
}

В моем приложении WP7 я использую следующий код:

string opUrl = "http://localhost:80/services/myService.svc";
Uri myServiceUri = new Uri(opUrl, UriKind.Absolute);

WebClient myServiceClient = new WebClient();
myServiceClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(myServiceClient_DownloadStringCompleted);
myServiceClient.DownloadStringAsync(myServiceUri);

private void myServiceClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
  if (e.Result == null)
    MessageBox.Show("null");
  else
    MessageBox.Show(e.Result);
}

При выполнении этого e.Result не является нулевым.Скорее возвращается куча HTML, говорящая мне использовать svcutil.exe.Мои вопросы: 1) как я могу назвать этот «MyMethod» с помощью webHttpBinding?2) как мне передать параметры?

1 Ответ

1 голос
/ 27 сентября 2010

Вы не должны использовать привязку службы.Вы не привязаны только к сообщениям формата SOAP .

Вы можете использовать WebClient и HttpWebRequest .

Обратите внимание, что на телефоне поддерживаются только асинхронные запросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...