[질문] XML Service 관련 질문 입니다.
글쓴이: aavaaa / 작성시간: 수, 2011/06/22 - 3:57오후
몇일째 고민하고 있는지 모르겠네요.
문제는 클라이언트-서버 간에 데이터를 XML로 주고 받고 싶은데 잘 안된다는 겁니다.
클라이언트는 C++로 구현하고 웝 서버는 ASP.NET이나 C++로 구현해야 합니다.
특히 제가 하고자 하는 것은 웹 서비스 서버를 구현하는 것 입니다. 추후에 XML 데이터를
C++로 프로세스를 만들어 처리해야 하구요.
우선 웹 서비스를 만들어(.asmx) 접속하고 값을 주고 받았는데 클라이언트에 돌아오는 값은
SOAP 형태의 값이 였습니다. 전 순수한 XML 값만 받고 싶습니다.
이것 저것 해보느라 코드가 좀 지져분 합니다.
[WebMethod(Description = "This method converts a temperature in " + "degrees Fahrenheit to a temperature in degrees Celsius.")] //public string ConvertTemperature(double dFahrenheit) public XmlDocument ConvertTemperature(double dFahrenheit) //public XmlDocument ConvertTemperature() { ////Console.Write("1"); ////double a = ((dFahrenheit - 32) * 5) / 9; //return "<responseResult>" +a.ToString()+ "</responseResult>"; XmlDocument dom = new XmlDocument(); XmlElement people = dom.CreateElement("People"); dom.AppendChild(people); XmlElement person = dom.CreateElement("Person"); people.AppendChild(person); XmlElement firstName = dom.CreateElement("FirstName"); person.AppendChild(firstName); XmlText text = dom.CreateTextNode("Bob"); firstName.AppendChild(text); // load some XML ... return dom; }
다른 방법으로는 웹 page를 만들어서 시도해 보았는데 이번에는 HTML 형식으로 클라이언트에 넘겨 줍니다.
protected void Page_Load(object sender, EventArgs e) { XmlDocument xd = new XmlDocument(); //Response.Write("test"); string str = Request.Form.ToString(); //string str = "<br><h1> abcd </h1>"; Page.RegisterClientScriptBlock("testMsg", str); // Response.End(); }
이 왜에 ASP 소스를 구해 시도해 보았는데 이는 잘 구현 되었습니다.
하지만 제가 VB를 잘 모르는 터라 ASP.NET으로 마이그레이션이 안되더군요 ㅜㅜ
<% dim XMLDom dim currNode dim stockSymbol Dim ConnectionString Dim Connection Dim rs Dim field Dim SQLQuery 'Process the XML Request String Set XMLDom = Server.CreateObject("Microsoft.XMLDOM") XMLDom.async = False if (XMLDom.loadXML(request.form) = false) then Response.Write("Invalid Request String") Response.End() end if Set currNode = XMLDom.documentElement.selectSingleNode("/RequestStockPrice") stockSymbol = currNode.getAttribute("Symbol") 'Make Database Connection ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\RealTimeStock_srv\stocks.mdb;DefaultDir=;UID=;PWD=;" Set Connection = Server.CreateObject("ADODB.Connection") Connection.Open ConnectionString set rs = Server.CreateObject("ADODB.RecordSet") SQLQuery = "SELECT LastTradePrice FROM RealTimeStock where Symbol ='"+stockSymbol+"'" 'Retrieve stock price from database rs.Open SQLQuery, Connection 'Form response XML string Response.Write("<ResponseStockPrice>") if ( rs.EOF = false ) then For each field in rs.Fields Response.Write("<") Response.Write field.Name Response.Write(">") Response.Write field.Value Response.Write("</") Response.Write field.Name Response.Write(">") Next else 'No record found Response.Write("<ErrorMesg>") Response.Write stockSymbol&" : Stock symbol not found in database" Response.Write("<a>") Response.Write (" : Stock symbol not found in database") Response.Write("</a>") Response.Write("</ErrorMesg>") end if Response.Write("</ResponseStockPrice>") 'close connections rs.Close Connection.Close Set dom = Nothing Set currNode = Nothing Set rs = Nothing Set field = Nothing Set Connection = Nothing %>
계속 알아봐야 겠지만 점점 자괴감만 OTL......
결론적으로 제가 도움을 바라는 것은 C++ 이나 ASP.NET 으로 XML 서비스를 제공할 수 있는
웹 서버를 구현하는 것입니다. 물론 XML을 통으로 주고 받아야 하구요.
고수님들 도와주소서~~ㅠㅠ
Forums:
이런...
실수로 3개나 올렸네요 ㅡㅡ;
원래 WebService는 SOAP 메시지를 주고
원래 WebService는 SOAP 메시지를 주고 받습니다.
WebService를 만드셨으니. ^^
정확하게 웹페이지를 만드시면 될 것 같습니다.
-----------------
한글을 사랑합니다.
우선 도움 감사드립니다. lovian 님 말씀처럼
우선 도움 감사드립니다.
lovian 님 말씀처럼 어떻게 해도 SOAP으로 반환 되더군요
그래서 웹 페이지를 만들어 XML를 반환하도록 했습니다.
또 다시 문제는 클라에서 보내는 XML을 확인해 볼 수가 없다는 것인데
request.form.count를 출력해 보면 0만 나옵니다. ㅡㅜ
제가 웹 페이지를 거의 처음 해보는 거라 이것 저것 태클이 많네요 ㅎㅎ