1 20 50 150 500
欢迎来到莱福软件站,找素材,搜软件,就上莱福软件站!
当前位置 >首页 >软件下载 >电脑软件 >编程开发 >编程软件

Aliexpress API 测试工具

软件信息
  • 分类:编程软件
  • 大小:1.1M
  • 语言: 中文
  • 环境: WinAll, WinXP
  • 更新:2024-11-13
  • 评级:
  • 系统: Windows Linux Mac Ubuntu
  • 软件类别: 国产软件 / 免费软件 / 编程辅助
  • 插件情况:

这个工具借用了 JsonView 的一个控件, 从CodePlex 上下来的JsonView 用的是 Newtonsoft.Json 1.1.1.0 , 但是在 API 内,我用的是 4.5.0.0 的DLL去解析 API 返回的数据, 这样就造成了DLL版本不一致的问题. 

要解决这个问题,需要在 APP.config 里加一段:

 1 <configuration>
 2 
 3 <runtime>
 4 
 5 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 6 
 7 <dependentAssembly>
 8 
 9 <assemblyIdentity name="Newtonsoft.Json"/>
10 
11 <codeBase version="1.1.1.0" href="v1/Newtonsoft.Json_1.dll"/>
12 
13 <codeBase version="4.5.0.0" href="Newtonsoft.Json.dll"/>
14 
15 </dependentAssembly>
16 
17 </assemblyBinding>
18 
19 </runtime>
20 
21 </configuration>

将 1.1.1.0 的 DLL 放到程序目录下面的 V1 文件夹下, 版本冲突就解决了.

大至的一个结构:

Methods 下的每个类对应 API 里的每个方法, 大致如下:

 1 public class OrderQueryList : MethodBase<OrderList> {
 2 
 3 
 4 
 5 protected override string APIName {
 6 
 7 get { return "api.findOrderListQuery"; }
 8 
 9 }
10 
11 
12 
13 private int pageSize = 50;
14 
15 
16 
17 [ParamName("pageSize", Required = true)]
18 
19 public int PageSize {
20 
21 get {
22 
23  return pageSize;
24 
25 }
26 
27 set {
28 
29  this.pageSize = value < 1 ? 1 : (value > 50 ? 50 : value);
30 
31 }
32 
33 }
34 
35 
36 
37 private int page = 1;
38 
39 
40 
41 [ParamName("page", Required = true)]
42 
43 public int Page {
44 
45 get {
46 
47  return this.page;
48 
49 }
50 
51 set {
52 
53  this.page = value < 1 ? 1 : value;
54 
55 }
56 
57 }
58 
59 
60 
61 [ParamName("createDateStart")]
62 
63 [AliDateTimeParamFormatter("MM/dd/yyyy")]
64 
65 public DateTime? CreateBegin { get; set; }
66 
67 
68 
69 [ParamName("createDateEnd")]
70 
71 [AliDateTimeParamFormatter("MM/dd/yyyy")]
72 
73 public DateTime? CreateEnd { get; set; }
74 
75 
76 
77 [ParamName("orderStatus")]
78 
79 public OrderStatus? Status { get; set; }
80 
81 }
82 
83 

带 ParamName 特性的属性即API 说明列出的 API 方法所需要的参数, 在 MethodBase 里有个虚方法 Execute 及 GetResult.

 绝大部分API方法不需要重写这两个方法, 但是有两个特例(到目前为止,我遇到的): 和上传图片有关的两个方法.

http://gw.api.alibaba.com/dev/doc/api.htm?ns=aliexpress.open&n=api.uploadTempImage&v=1

大家可以看看, Ali 的人真是省事, 就几句话了事. 光凭这几句话, 打死我也想不出要怎么个上传法. 我费劲巴啦的耗了几个小时按照网页上传图片的方法对 RequestHelper 类进行修改,然后建个测试网站做测试, 改完后发现牙的根本就不是这样上传的, 结果死都是500,未找到文件.

后来在阿里巴巴的论坛里找到了某同志的回贴, 原来和从网页上传图片完全不搭调.

 1 [NeedAuth]
 2 public override string GetResult(Auth auth) {
 3 var url = auth.GetApiUrl(this.APIName).SetUrlKeyValue("srcFileName", this.FileName);
 4 using(var client = new WebClient()) {
 5  try {
 6  var result = client.UploadData(url, this.UploadData);
 7  return Encoding.UTF8.GetString(result);
 8  } catch(WebException ex) {
 9  return Encoding.UTF8.GetString(ex.Response.GetResponseStream().GetBytes());
10  }
11 }
12 }

原来是直接将文件的字节数组 Post 到特定格式的网址里, 真的是很晕,我熬夜到3点多,尽然是多此一举.

另外, 由于精力有限, 目前我只对照返回结果写了几个对应的实体, 其它的没有用到的,我不打算写, 如果各位有兴趣的话,可以反编译一下: AsNum.Aliexpress.API.dll 这个DLL, 源码我也不准备放出, 因为真的是很简单(只是有些繁琐而以), 有需要的可以自行反编译一下.

使用之前需要从菜单里设置一下 AppKey 和 SecretKey , 当然你需要有一个 Aliexpress 的账户.

下载地址

热门软件

Top