2015-01-21 1 views
0

Я разрабатываю приложение backoffice для Windows Phone 7.1 минимальное требование. Для этого он использует asmx webservice. Но я хочу сделать приложение таким образом, чтобы он мог подключаться к серверу любого клиента. Поэтому мне нужно менять путь webservice каждый раз, сохраняя методы такими же, как и более. Есть ли способ вызвать websevice непосредственно в Windows Phone 7 без добавления веб-ссылки?Вызов WebService Без добавления веб-ссылки в C# .net framework 2.0 для Windows Phone 7

Пример кода:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url); 
req.Headers.Add("SOAPAction", "\"" + Namespace + methodName + "\""); 
req.ContentType = "text/xml;charset=\"utf-8\""; 
req.Accept = "text/xml"; 
req.Method = "POST"; 
using (Stream stm = req.GetRequestStream()) 
{ 
string postValues = ""; 

if (Convert.ToInt32(Params["number"]) > 0) 
{ 
foreach (var param in Params) 
{ 
    if (encode) postValues += string.Format("<{0}>{1}</{0}>", HttpUtility.UrlEncode(param.Key), HttpUtility.UrlEncode(param.Value)); 
    else postValues += string.Format("<{0}>{1}</{0}>", param.Key, param.Value); 
} 
} 
soapStr = string.Format(soapStr, methodName, postValues); 
using (StreamWriter stmw = new StreamWriter(stm)) 
{ 
    stmw.Write(soapStr); 
} 
} 

using (StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream())) 
{ 
string result = responseReader.ReadToEnd(); 
//ResponseSOAP = XDocument.Parse(Utils.UnescapeString(result)); 
ExtractResult(methodName); 
} 

Ошибки:

  1. 'System.Net.WebHeaderCollection' не содержит определение для 'Добавить' и не метод расширения 'Добавить' принимающую первого можно найти аргумент типа «System.Net.WebHeaderCollection» (вам не хватает директивы использования или ссылки на сборку?)

  2. «System.Net .HttpWebRequest 'не содержит определения для «GetRequestStream», и не может быть найден метод расширения GetRequestStream, принимающий первый аргумент типа «System.Net.HttpWebRequest» (вам не хватает директивы использования или ссылки на сборку?)

+0

Вы можете достичь этого, используя HTTP-запросы, для которых требуется url ... Я бы не предлагал этого, хотя (вы должны убедиться, что служба asmx - это HTTP-доступ и сообщение включено.) Я бы предпочел сделать сборник услуги, которые у него уже есть. – Jonny

+0

@ Jonny Я разработал один класс, с помощью которого я могу позвонить в webservice без добавления веб-ссылки, так как Windows Phone 7 использует .net framework 2.0, это дает мне некоторую ошибку. Проверьте следующую ссылку: http://www.diogonunes.com/blog/calling-a-web-method-in-c-without-a-service-reference/ –

+0

@sumit_dev Можете ли вы разместить сообщение об ошибке? И я могу помочь. Я исхожу из того, что ваш класс идентичен коду в ссылке. – Jonny

ответ

0

, если веб-сервисы все равно, но только разница между ними есть путь, вы можете создать ссылку на службу обычно и в конструкторе присвоить связывающее имя и новый HTTP Uri, что-то вроде этого

var serviceClient = new ServiceClient("http", txtUriPath.Text); 

Но если у вас есть различные методы для различного пути Uri для каждой веб-службы, их вы должны сообщить нам ошибка, которую вы на самом деле имеете.

+0

У меня есть код обновления, а также ошибка в сообщении. –