У меня есть сервис 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) как мне передать параметры?