#c# #web-services #windows-phone
#c# #веб-службы #windows-phone
Вопрос:
Я впервые делаю что-то подобное, поэтому я, вероятно, буду звучать глупо, но вот оно.
Вот мой метод, который должен подключаться к веб-службе.
public async void getWebData()
{
var uri = new Uri("http://localhost:9011/Service.svc?singleWsdl");
var httpClient = new HttpClient();
// Always catch network exceptions for async methods
try
{
var result = await httpClient.GetStringAsync(uri);
doSomething(result);
}
catch
{
// Details in ex.Message and ex.HResult.
}
// Once your app is done using the HttpClient object call dispose to
// free up system resources (the underlying socket and memory used for the object)
httpClient.Dispose();
}
Вот моя информация о конфигурации из файла web.config, где, я полагаю, я правильно добавил конечную точку rest, потому что я прочитал, что вы должны использовать конечную точку rest для доступа к веб-службам в приложениях Windows 8.1 phone.
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService" />
</basicHttpBinding>
<webHttpBinding>
<binding name="WebHttpBinding_IService" />
</webHttpBinding>
</bindings>
<services>
<service name="WcfService.Service1" behaviorConfiguration="MyServiceBehavior">
<endpoint address="http://localhost:9011/Service.svc?singleWsdl" name="rest"
binding="webHttpBinding" bindingConfiguration="WebHttpBinding_IService" contract="WcfService.IService" />
<endpoint address="http://localhost:9011/Service.svc?singleWsdl" name="soap"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="WcfService.IService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript/>
</behavior>
</endpointBehaviors>
</behaviors>
Итак, кто-нибудь может сказать мне, что я делаю не так, чтобы получить доступ к моему веб-сервису, потому что ничего из того, что я пробовал, не работало…
Комментарии:
1. что является исключением?
2. Я не получаю исключение. Я вставил точку останова в строку результата, и она никогда не достигает точки останова
3. Вы новичок в C # и веб-службе? Потому что в соответствии с вашим web.config вам нужно использовать прокси-класс, но вы напрямую получаете доступ к wsdl в своем коде. Другое предложение — попробовать без асинхронности и ожидания.
4. следуйте этому примеру: prathapk.net/consuming-wcf-service-in-windows-phone-application
5. Может быть, глупый вопрос, но вы уверены, что можете нажать
localhost
с телефона / эмулятора? Не знаю, действительно ли он распознает. Потомуlocalhost
что всегдаMe
.