none
如何丟xml資料給web service? RRS feed

  • 問題

  • 各位大大們好

    小弟剛學ASP.NET,目前把web service架起來了

    只會由本機的HTTP POST 測試資料

    .asmx下面出現的 SOAP 1.1 &SOAP 1.2不知道是什麼東西(查資料的結果知道是一種協定)

    如果從其他台電腦丟HTTP POST
    我想到可以把asmx引用,在另外寫aspx網頁,用post方式傳入
    但有個問題
    我要如何直接丟xml file給web service
    1.網址要用:
    http://localhost/123.asmx or
    http://localhost/123.asmx?op=Blood

    這種方法我試過不行 http://localhost/123.asmx/Blood?name=nick&pass=123

    2.我要用什麼方法丟值給web service?

    例如:可以在ASP.NET裡面把值帶入xml產生器(ex:xmldocument)然後傳給.asmx

    麻煩各位大大指導一下,謝謝。

    2012年2月17日 上午 09:19

解答

  • 恩,您誤會web參考/服務參考的意思了。

    你的Web站台引用別人/自己的web service後,就會出現一個你定義的namespace,以及產生對應的class可以使用,這個namespace底下,就代表你的web參考,也就是你要用的webservice,而產生的class,也就代表該webservice上的服務與方法。

    ASP.NET會自動幫你產生該webservice對應的class,而讓你不需要去考慮協定(SOAP),以及資料傳遞格式(string, JSON, XML...),你就是直接把該webservice當作內部的class使用 (就像Adapter一樣,讓你無感的使用遠端webservice)。

    既然不需要知道資料傳遞格式,那簡單的說,就是看該webservice上,需要哪些參數,你的class與方法就會自動產生對應需要的參數型別 (可以自訂當webservice參數型別是集合時,在你的站台底下要用什麼樣的型別來對應,例如Array, List等等...但是一樣,你不用管他怎麼轉換,ASP.NET會幫你做掉)

    所以webservice上的方法參數型別是什麼,ASP.NET產生出來的class方法上基本上就會是什麼。通常絕大部分是string就是。


    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    • 已標示為解答 -_- Nick -_- 2012年2月20日 上午 01:36
    2012年2月18日 上午 03:52
    版主

所有回覆

  • 參考看看Mis2000Lab的文章:http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/26/webservice_1.aspx

    是系列文,看看您會不會比較能step by step的跟著做。

    基本上就是建議您如果是要用已經存在的.asmx,請加入服務參考或web參考,ASP.NET會幫你做掉協定的部份。


    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki


    2012年2月17日 上午 09:28
    版主
  • 同樣推薦MIS2000Lab的一系列有關Web Services和ASP.NET的文章。其中一個跟91大所PO的相同。


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年2月17日 上午 09:32
  • 謝謝兩位大大的熱心回覆

    MIS2000大大的網站和書我都有買和看(ASP.NET專題實務1 & 2)

    可能因為是ASP.NET新手的關係

    所以我認為,加入web參考再開.aspx來撰寫程式,是web service接到參數後,做的後續其他處理

    第1篇:架web service,第2篇:引用別人(自己)的web service,第3~5篇文章是處理接到參數後,再去資料庫拉資料

    但是我的問題點是,我要怎麼樣把web service需要的參數,製作好xml格式後,透過SOAP協定,丟給web service

    (SOAP這段我知道好像不需要程式設計者來處理)(我希望的不是在web service本機用HTTP POST的方式處理><)

    當然,在web service接到參數,處理完後(拉資料……),如何接收web service回傳的值是我另外一個問題

    但是我目前比較想要拜託大大們給我方向,讓我知道的是,如何丟參數給web service這段

    2012年2月18日 上午 12:32
  • 因為xml就是一個字串,所以參數設成string就可以了!

    所以,如果您要回傳是一份xml string的話,回傳值也用stirng就可以了!

    Web service接收參數及傳回xml的範例如下,

    [WebMethod]
    public string GetXML(string xmlString)
    {
    	System.Xml.XmlDocument myDoc = new System.Xml.XmlDocument();
    	myDoc.LoadXml(xmlString);
    	//...做你要做的事
    	string result = myDoc.OuterXml;
    	return result;
    }


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2012年2月18日 上午 02:32
  • 恩,您誤會web參考/服務參考的意思了。

    你的Web站台引用別人/自己的web service後,就會出現一個你定義的namespace,以及產生對應的class可以使用,這個namespace底下,就代表你的web參考,也就是你要用的webservice,而產生的class,也就代表該webservice上的服務與方法。

    ASP.NET會自動幫你產生該webservice對應的class,而讓你不需要去考慮協定(SOAP),以及資料傳遞格式(string, JSON, XML...),你就是直接把該webservice當作內部的class使用 (就像Adapter一樣,讓你無感的使用遠端webservice)。

    既然不需要知道資料傳遞格式,那簡單的說,就是看該webservice上,需要哪些參數,你的class與方法就會自動產生對應需要的參數型別 (可以自訂當webservice參數型別是集合時,在你的站台底下要用什麼樣的型別來對應,例如Array, List等等...但是一樣,你不用管他怎麼轉換,ASP.NET會幫你做掉)

    所以webservice上的方法參數型別是什麼,ASP.NET產生出來的class方法上基本上就會是什麼。通常絕大部分是string就是。


    若您的程式碼有SQL injection的問題,在修改完畢之前,我不願意給您任何解答。因為解決了您的程式問題,造成更大的系統漏洞問題,還不如讓程式壞掉。

    請參考:SQL injection簡介與解決方式

    常用資源參考:


    小弟的blog: In 91,wiki: my wiki

    • 已標示為解答 -_- Nick -_- 2012年2月20日 上午 01:36
    2012年2月18日 上午 03:52
    版主
  • 原來是自己搞混了~之前方向完全搞錯,還去瞭解了xml怎麼產生………謝謝91大
    2012年2月20日 上午 02:59
  • 透過 Visual Studio來開發 Web Service  or WCF都很輕鬆

    您只要專心寫程式

    其餘的格式、收發,您都不用擔心

    (所以您擔心過頭了,連彼此傳遞的XML文件內容,都想插手去管。
       事實上,不需要喔~ ^_^)


    我的書 與 ASP.NET教學網站 http://www.dotblogs.com.tw/mis2000lab/

    2012年2月20日 上午 03:49