2008-09-09 2 views
4

C#에서 HTTP 연결을 열고 XML을 다운로드하여 결과에서 하나의 값을 얻으려면 어떻게해야합니까? 일관성을 위해C#의 XML 웹 서비스에서 값을 얻으려면 어떻게해야합니까?

는 상상 웹 서비스는 www.webservice.com에 있고 당신이 그것에게 POST 인수 fXML = 1을 전달하는 경우 "someValue와 그것을 다시

<xml><somekey>somevalue</somekey></xml> 

을 제공합니다 나는 그것을 뱉어하고 싶은 것을 ".

답변

3

을하고 그것을 잘 작동합니다 :

+0

요청하신 작성자가 POST가 아닌 GET을 통해 매개 변수를 전달하고 있습니다. – aku

+0

aku의 POST 정보를 가져 와서 답변을 편집하십시오. 아직 2k 담당자가 없습니다. :) –

4

나는 그것을 읽고 도움이 될 것입니다 생각이 첫 번째 :

이 웹 서비스는 XML 입력이 얼마나 포함 .NET에서 사용하는 방법에 대한 자습서 시리즈입니다

(.NET에서)

Creating and Consuming a Web Service 사용 (비 직렬화). 나는이 코드를 테스트 할 기회가 없었어요

var client = new WebClient(); 
var response = client.UploadValues("www.webservice.com", "POST", new NameValueCollection {{"fXML", "1"}}); 
using (var reader = new StringReader(Encoding.UTF8.GetString(response))) 
{ 
    var xml = XElement.Load(reader); 
    var value = xml.Element("somekey").Value; 
    Console.WriteLine("Some value: " + value);     
} 

참고하지만, 그것을 작동합니다 :) 나는이 코드를 사용

2

당신은 그런 일을 사용할 수 있습니다 :

System.Xml.XmlDocument xd = new System.Xml.XmlDocument; 
xd.Load("http://www.webservice.com/webservice?fXML=1"); 
string xPath = "/xml/somekey"; 
// this node's inner text contains "somevalue" 
return xd.SelectSingleNode(xPath).InnerText; 

편집 : 난 그냥 당신이 웹 서비스에 대해 이야기뿐 아니라 일반 XML있어 깨달았다. Visual Studio 솔루션에서 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭하고 "웹 참조 추가"를 선택하십시오. URL을 묻는 대화 상자가 나타나면 "http://www.webservice.com/webservice.asmx"에 붙여 넣기 만하면됩니다. VS는 필요한 모든 도우미를 자동 생성합니다. 그런 다음 당신은 그냥 호출 할 수 있습니다 : 또한 당신이 특별히 오히려 SOAP보다 POST를 사용해야 할 경우 다음 POST받을 수있는 웹 서비스를 구성 할 수있는 추가 가치가있을 수 있습니다

com.webservice.www.WebService ws = new com.webservice.www.WebService(); 
// this assumes your web method takes in the fXML as an integer attribute 
return ws.SomeWebMethod(1); 
+0

이것은 웹 서비스에 대한 엄청난 양의 작업과 오버 헤드처럼 보입니다. –

+0

Rob, 웹 서비스는 항상 WSDL \ SOAP가 아닙니다. 때로는 서버에서 직접 데이터를 가져와 파싱해야합니다. 이 질문에 관한 한 가지 이상한 점은 POST 방법입니다. 보통 이러한 간단한 서비스는 GET을 사용합니다. – aku

관련 문제