公司在噹噹上經營了一家店鋪,通過噹噹提供的api,用c#寫**,通過nco3.0呼叫sap rfc將訂單資訊抓取到sap。
如果你是新手,在當當網上有店鋪,且你公司使用sap系統,恭喜你,下面這些**直接複製過去,改下商家編碼和金鑰就可以直接抓單了。如果你只是當當網有店鋪,沒有sap系統,下面這些**也同樣對你有用,你或許要插入自己的資料庫,這更簡單了。
需要準備的環境:
1、 microsoft visual studio 2010 開發環境。
)(vs2010環境下必須這個版本:sapnco30dotnet40p_8-20007347.zip)
4、 在sap裡建2張表,用sap專業術語,建乙個抬頭表,建乙個行專案表
5、 噹噹api手冊(在商家後台,公告欄處可以看見)
step1
登入當當網商家後台,設定商家介面密碼(這些內容噹噹api裡有)
注意:1、 商家修改介面密碼(key)時,需要提供原key值;如果商家是第一次使用該功能,那麼可以不輸入原key值;
2、 新key值區分大小寫,設定時請特別注意;
3、 新key值長度為8-20位,不能全部為數字,不能全部為小寫字母,不能全部為大寫字母;
step2
開啟vs2010新建乙個windows窗體應用程式,命名:dangdang
在解決方案資源管理器,引用裡引用nco3.0的sapnco.dll和sapnco_utils 及 log4net
右擊專案名稱dangdang,點選「屬性」,開啟屬性面板:將目標框架裡預設的.net framework 4 client profile 改為:.net framework 4。(很重要)
經過step2的設定,vs環境這邊算是搭建ok了。第3步,我們去sap建表去(建表詳細略)
因為我們這裡這是抓取噹噹訂單的資訊。所以建2張表,表的字段和含義請熟讀噹噹api手冊。
上面這張圖不是完全的,因為截圖截不了那麼多,下面還有很多字段,這些欄位都是根據api手冊來設定的,當然你可以靈活的從這些欄位中取認為你需要的資訊。
這兩張表,我都選了」訂單編號」做為主鍵,方便以後關聯查詢。
step4
寫rfc(寫rfc可以參照我之前寫的部落格)
source code裡的**很簡單。
1 if it_zdditemstep5is not initial.
2 modify zdditem from table it_zdditem
.3 if sy-subrc = 0.
4 r_subrc ='資料已成功寫入zdditem表裡'.
5endif.
6endif.
78 if it_zdditemmas
is not initial.
9 modify zdditemmas from table it_zdditemmas
.10 if sy-subrc = 0.
11 r_subrc ='資料已成功寫入zdditemmas表裡'.
12endif.
13 endif.
到第5部了,開始在vs裡寫**了。首先要解決的是」驗證碼演算法」,api手冊了給了解釋:
validatestring引數是每個api請求中必須傳送的引數,由請求中的其它引數以及後台設定的key值兩部分,採用md5加密生成,具體演算法如下:
第一步,把請求中的引數(xml檔案以及validatestring本身除外),按照引數名稱進行正向排序
第二步,把各個引數的值按照gbk編碼後,按照排序順序串聯起來(不能有空格)
第三步,把後台設定的key值按照gbk編碼後,串接到「第二步」得到的字串尾部(不能有空格)
第四步,採用md5演算法對「第三步」得到的字串進行加密,生成validatestring的值
好了,我直接上c#**,將這4步翻譯成**:
1step 6public
static
string md5(string str, string
encode)210
return
sbuilder.tostring();11}
12public
static
string signtoprequest(idictionary parameters, string
key)
1322
}23 str += system.text.encoding.getencoding("
gbk"
).getstring(system.text.encoding.default.getbytes(key));
24return md5(str, "
utf-8");
25}26private
static idictionary spliturlquery(string
query)
27);
31if (pairs != null && pairs.length > 0)32
, 2);
36if (oneparam != null && oneparam.length == 2)37
40}41}
4243
return
result;44}
45 }
這個驗證碼有了,就好像有了進當當系統的通行證了,現在我們拿著通行證到當當里把訂單資訊取出來,**如下:
1step7public
void
getorder()
215 }
,把這些**放進去即可)
1step8public
class
xmltodata217
catch
(exception e)
1821
finally
2229}30
}31else
3235
}36 }
如果你按照上面講的,操作無誤的話,設斷點,點除錯,在ds裡就能看到20條訂單列表資訊了。噹噹不會那麼容易讓你一下取很多資料的,預設的就是20條,且1分鐘只能請求30次。拿到這個簡單的訂單列表資訊後,你還需要通過訂單編號和通行證,再去取一次該訂單的詳細資訊。這第7步,我來說怎麼把vs和sap打通。
首先你得這樣:using sap.middleware.connector;
然後這樣,直接上**:
1step9#region 通過nco3.0將資料寫入sap(zddheader)
2public
void
sap_dangdang_rfc(dataset dsall)
332 myfun.invoke(saprfcdestination); //
執行函式33}
34catch
(exception e)
3538
finally
3943}44
45#endregion
如果上面都無誤的話,點執行。然後到sap的表裡就可以看到20條資料了。
原文:
實戰專案 通過噹噹API將訂單抓取到SAP 二
接著我們配置相關的配置檔案 winform對應的是 exe.config,webform對應的是 config 本例項中是控制台應用程式,配置如上篇部落格的圖。1 using log4net 23 注意下面的語句一定要加上,指定log4net使用.config檔案來讀取配置資訊4 assembly ...
通過Xcode將專案同步到GitHub上
主要參考這篇文章 1.在xcode上新建乙個repository 2.獲取新建倉庫的ssh url 3.開啟xcode,選擇第二項connect to a repository 4.把repository轉殖到本地目錄下,比如桌面的ttimagepicker 5.新建乙個xcode工程,儲存到剛才新...
通過XAMPP將專案部署到Tomcat上
2 可以看到xampp的控制面板如下所示 3 在xampp控制面板中啟動apache伺服器,並在瀏覽器位址列輸入http localhost回車,當出現如下頁面時,表示xampp安裝並且配置成功。有需要的話,可以通過修改配置檔案為了避免埠衝突,配置檔案位於f xampp apache conf ht...