全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3686
推到 Plurk!
推到 Facebook!

環保署即時空氣品質的WebService服務問題

缺席
ESCAPE
一般會員


發表:37
回覆:47
積分:16
註冊:2005-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-07-13 14:32:25 IP:59.127.xxx.xxx 訂閱
請教各位有經驗的先進,目前小弟有個需求,是必須取得環保署即時空氣品質資料。環保署有提供WebService服務,但是嘗試了很久始終無法取得正確的資料,比如要取得所有測站代號,卻回傳「INTERR」的訊息。小弟也參考過許多範例但還是失敗,請有經驗的前輩測試看看是否也可以傳回正確的資料。在此請各位前輩不吝指教,謝謝。

環保署WebService:http://taqm.epa.gov.tw/taqm/DataService.asmx
環保署WSDL:http://taqm.epa.gov.tw/taqm/DataService.asmx?WSDL

小弟自行撰寫的程式碼,因為目前測試用,所以寫得很簡單,也請前輩們看看是否有錯誤,謝謝。

[code delphi]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InvokeRegistry, StdCtrls, Rio, SOAPHTTPClient, SOAPHTTPTrans;

type
TForm1 = class(TForm)
Memo1: TMemo;
HTTPRIO1: THTTPRIO;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses DdataService;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
idataservice:DataServiceSoap;
begin
memo1.Clear;
iDataService:=HttpRio1 As DataServiceSoap;
memo1.Lines.Add(iDataService.SiteList('xml'));
ShowMessage('Ok');
end;

end.
[/code]

編輯記錄
ESCAPE 重新編輯於 2010-07-13 14:35:34, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-07-14 17:36:56 IP:203.75.xxx.xxx 未訂閱
 我目前試著用bcb6,結果會和你相同(失敗)

後來改用Delphi 2010,發現它可以正確擷取資料耶!(成功)

這其中到底有什麼奧秘…我就不知道了。
bestlong
站務副站長


發表:126
回覆:734
積分:512
註冊:2002-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-07-14 23:55:11 IP:203.217.xxx.xxx 未訂閱
該不會是編碼的問題
將 ISO-8859 或是 BIG5 的編碼資料送給 UTF-8 的 Web Service 會爛掉的
------
http://blog.bestlong.idv.tw/
http://www.bestlong.idv.tw/
http://delphi-ktop.bestlong.idv.tw/
HikaruGo
中階會員


發表:22
回覆:69
積分:88
註冊:2007-12-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-07-14 23:55:44 IP:112.104.xxx.xxx 訂閱

delphi win32 call .NET 的WS SOAP 有些格式上的問題,
建議
使用 'MSSOAP.SoapClient' CALL WS.

該WebService 沒有中文引數,所以 使用此當Soluction 是比較好的方式.


===================引 用 ESCAPE 文 章===================
請教各位有經驗的先進,目前小弟有個需求,是必須取得環保署即時空氣品質資料。環保署有提供WebService服務,但是嘗試了很久始終無法取得正確的資料,比如要取得所有測站代號,卻回傳「INTERR」的訊息。小弟也參考過許多範例但還是失敗,請有經驗的前輩測試看看是否也可以傳回正確的資料。在此請各位前輩不吝指教,謝謝。

環保署WebService:http://taqm.epa.gov.tw/taqm/DataService.asmx
環保署WSDL:http://taqm.epa.gov.tw/taqm/DataService.asmx?WSDL

小弟自行撰寫的程式碼,因為目前測試用,所以寫得很簡單,也請前輩們看看是否有錯誤,謝謝。

[code delphi]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InvokeRegistry, StdCtrls, Rio, SOAPHTTPClient, SOAPHTTPTrans;

type
TForm1 = class(TForm)
Memo1: TMemo;
HTTPRIO1: THTTPRIO;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses DdataService;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
idataservice:DataServiceSoap;
begin
memo1.Clear;
iDataService:=HttpRio1 As DataServiceSoap;
memo1.Lines.Add(iDataService.SiteList('xml'));
ShowMessage('Ok');
end;

end.
[/code]

編輯記錄
HikaruGo 重新編輯於 2010-07-15 00:06:58, 註解 無‧
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-07-15 08:46:53 IP:203.75.xxx.xxx 未訂閱
沒錯,Delphi 6 + HTTPRIO 發出的SOAP封包會和官網的範例不太一樣,可能就是造成INTERR的主因。
(不過此問題卻在Delphi 2010 SOAP 1.2後可以得到解決)

果然微軟開發的產品還是得用微軟的工具才有最佳的相容性啊~

今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!真是太厲害了啦!HikaruGo大大!


===================引 用 HikaruGo 文 章===================

delphi win32 call .NET 的WS SOAP 有些格式上的問題,
建議
使用 'MSSOAP.SoapClient' CALL WS.

該WebService 沒有中文引數,所以 使用此當Soluction 是比較好的方式.
ESCAPE
一般會員


發表:37
回覆:47
積分:16
註冊:2005-02-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-07-17 23:51:31 IP:118.232.xxx.xxx 訂閱

===================引 用 GrandRURU 文 章===================
沒錯,Delphi 6 HTTPRIO 發出的SOAP封包會和官網的範例不太一樣,可能就是造成INTERR的主因。
(不過此問題卻在Delphi 2010 SOAP 1.2後可以得到解決)

果然微軟開發的產品還是得用微軟的工具才有最佳的相容性啊~

今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!真是太厲害了啦!HikaruGo大大!


===================引 用 HikaruGo 文 章===================

delphi win32 call .NET 的WS SOAP 有些格式上的問題,
建議
使用 'MSSOAP.SoapClient' CALL WS.

該WebService 沒有中文引數,所以 使用此當Soluction 是比較好的方式.


不好意思,請問GrandRURU前輩,「MSSOAP.SOAPClient」是屬於元件嗎,要在哪裡加入?
因為我在Delphi 7似乎沒有這個元件。
再次感謝各位前輩的指教,謝謝。
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-07-18 20:44:59 IP:111.249.xxx.xxx 未訂閱
那算是微軟的外掛程式,詳細:
http://delphi.ktop.com.tw/board.php?cid=30&fid=68&tid=98015
這是HikaruGo大發的教學文章。

===================引 用 ESCAPE 文 章===================
不好意思,請問GrandRURU前輩,「MSSOAP.SOAPClient」是屬於元件嗎,要在哪裡加入?
因為我在Delphi 7似乎沒有這個元件。
再次感謝各位前輩的指教,謝謝。
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-05-17 15:24:26 IP:60.249.xxx.xxx 未訂閱
GrandRURU 大大你好!!

小弟第一次嚐試的要寫 web service 的程式, 也是用 bcb6

你說到的:
"今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!"

是否能提供 sourcecode ,給小弟參考,謝謝您!!!


===================引 用 GrandRURU 文 章===================
沒錯,Delphi 6 HTTPRIO 發出的SOAP封包會和官網的範例不太一樣,可能就是造成INTERR的主因。
(不過此問題卻在Delphi 2010 SOAP 1.2後可以得到解決)

果然微軟開發的產品還是得用微軟的工具才有最佳的相容性啊~

今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!真是太厲害了啦!HikaruGo大大!


===================引 用 HikaruGo 文 章===================

delphi win32 call .NET 的WS SOAP 有些格式上的問題,
建議
使用 'MSSOAP.SoapClient' CALL WS.

該WebService 沒有中文引數,所以 使用此當Soluction 是比較好的方式.
GrandRURU
站務副站長


發表:240
回覆:1680
積分:1874
註冊:2005-06-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-05-17 16:27:32 IP:59.120.xxx.xxx 未訂閱
1. 使用soap toolkit 3.0
如果網站建立在自己可以控制的服務器,則可選擇安裝soap toolkit 3.0來使用。soap toolkit是微軟提供的web services解決方案。可以從下面的地址下載得到,它是免費的。
下載後,安裝即可。
2. 請參考 HikaruGo 大所寫的內容


===================引 用 salo0610 文 章===================
GrandRURU大大你好!!

小弟第一次嚐試的要寫 web service 的程式, 也是用 bcb6

你說到的:
"今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!"

是否能提供 sourcecode ,給小弟參考,謝謝您!!!


===================引 用 GrandRURU 文 章===================
沒錯,Delphi 6 HTTPRIO 發出的SOAP封包會和官網的範例不太一樣,可能就是造成INTERR的主因。
(不過此問題卻在Delphi 2010 SOAP 1.2後可以得到解決)

果然微軟開發的產品還是得用微軟的工具才有最佳的相容性啊~

今天早上試了一下HikaruGo大所說的MSSOAP.SOAPClient。
在BCB6下也可以正常擷取耶!真是太厲害了啦!HikaruGo大大!


===================引 用 HikaruGo 文 章===================

delphi win32 call .NET 的WS SOAP 有些格式上的問題,
建議
使用 'MSSOAP.SoapClient' CALL WS.

該WebService 沒有中文引數,所以 使用此當Soluction 是比較好的方式.
系統時間:2024-04-26 22:37:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!