2015-01-21 6 views
0

Windows 용 전화 애플리케이션 7.1 최소 요구 사항을 개발 중입니다. 그것은 asmx webservice를 소모합니다. 하지만 모든 클라이언트의 서버에 연결할 수있는 응용 프로그램을 만들고 싶습니다. 그래서 나는 webservice 경로를 변경할 때마다 같은 방법을 유지해야합니다. 웹 참조를 추가하지 않고 Windows phone 7에서 직접 websevice를 호출 할 수있는 방법이 있습니까 ??WebService 호출 Windows 용 C# .net 프레임 워크 2.0에서 웹 참조를 추가하지 않고

샘플 코드 :

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. '시스템. Net.HttpWebRequest '에'GetRequestStream '에 대한 정의가없고'System.Net.HttpWebRequest '유형의 첫 번째 인수를 허용하는 확장 메서드'GetRequestStream '이 없습니다 (지시문이나 어셈블리 참조가 누락 되었습니까?)

+0

당신은 URL이 필요한 HTTP 요청을 사용하여이 작업을 수행 할 수 있습니다 ... 나는 이것을 제안하지 않을 것입니다. (asmx 서비스가 http를 가져오고 게시 할 수 있도록해야합니다.) 그는 이미 가지고있는 서비스입니다. – Jonny

+0

@Jonny 나는 웹 참조, bt를 윈도우 폰 7 사용으로 추가하지 않고 webservice를 호출 할 수있는 클래스를 개발했습니다 .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 열린 우리당이

같은 것을 지정
var serviceClient = new ServiceClient("http", txtUriPath.Text); 

그러나 각 웹 서비스의 고유 한 Uri 경로에 대해 고유 한 방법이있는 경우, 그는 당신이 실제로 가지고있는 오류입니다.

+0

게시물의 오류뿐만 아니라 업데이트 코드도 있습니다. –