Aliexpress API 测试工具

上回简单说了 Aliexpress API 的认证流程, 这回在奉送一个小工具, API 测试工具.

点我下载

做这一行,和做程序员的生活完全不搭调, 格格不入. 做个程序员,每天只需要做在那里动动手, 动动脑, 嗯,某些人可能还需要在动动嘴,拍拍马屁就行了.

但是做这一行, 找产品,上产品, 买货,发货, 回邮件,回客人, 一天能坐下来的时间并不多, 动手写程序的时间更是少的可怜. 我写程序的时候,都是在夜深人静的时候. 一是因为我的调皮女儿睡着了,二是耳边没有那个唐僧了.

先说一下界面, 这个工具借用了 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 里的每个方法, 大致如下:

public class OrderQueryList : MethodBase<OrderList> {

protected override string APIName {

get { return "api.findOrderListQuery"; }

}

private int pageSize = 50;

[ParamName("pageSize", Required = true)]

public int PageSize {

get {

return pageSize;

}

set {

this.pageSize = value < 1 ? 1 : (value > 50 ? 50 : value);

}

}

private int page = 1;

[ParamName("page", Required = true)]

public int Page {

get {

return this.page;

}

set {

this.page = value < 1 ? 1 : value;

}

}

[ParamName("createDateStart")]

[AliDateTimeParamFormatter("MM/dd/yyyy")]

public DateTime? CreateBegin { get; set; }

[ParamName("createDateEnd")]

[AliDateTimeParamFormatter("MM/dd/yyyy")]

public DateTime? CreateEnd { get; set; }

[ParamName("orderStatus")]

public OrderStatus? Status { get; set; }

}

带 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,未找到文件.

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

[NeedAuth]
public override string GetResult(Auth auth) {
var url = auth.GetApiUrl(this.APIName).SetUrlKeyValue("srcFileName", this.FileName);
using(var client = new WebClient()) {
try {
var result = client.UploadData(url, this.UploadData);
return Encoding.UTF8.GetString(result);
} catch(WebException ex) {
return Encoding.UTF8.GetString(ex.Response.GetResponseStream().GetBytes());
}
}
}

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

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

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

 
 
 

Aliexpress API 测试工具的更多相关文章

  1. 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到

    Hitchhiker 是一款开源的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起管理Api. 详细介绍 ...

  2. 开源API测试工具 Hitchhiker v0.5更新 - 完善细节

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起管理Ap ...

  3. 开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试 ...

  4. 开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Ap ...

  5. 开源API测试工具 Hitchhiker v0.8 - 自动化测试结果统计

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持自动化测试, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api. ...

  6. API测试工具SoapUI & Postman对比分析

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 最近公司要引入API测试工具,经过调查和了解,最终决定在SoapUI ...

  7. 开源API测试工具 Hitchhiker v0.10 - 中文版

    Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持自动化测试, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api. ...

  8. Hitchhiker 是一款开源的 Restful Api 测试工具

    Hitchhiker 是一款开源的 Restful Api 测试工具 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到 Hitchhiker 是一款开源的 Restf ...

  9. 如何选择API测试工具

    没有最好,只有最合适. 如今,越来越多的公司正在向DevOps的方向左转,以实现持续集成和持续部署开发.这意味着我们的反馈需要比以往更快,以便确定我们的应用程序是否准备好交付.这就是API测试如此重要 ...

随机推荐

  1. Swift中文教程(三)--流程控制

    原文:Swift中文教程(三)--流程控制 Swift用if和switch编写条件控制语句,用for-in,for,while和do-while编写循环.条件控制语句和循环语句中,小括号是可选的,但花 ...

  2. HQL语句大全

    第 15 章 HQL: Hibernate查询语言 Hibernate配备了一种很强大的查询语言,这样的语言看上去很像SQL.可是不要被语法结构 上的类似所迷惑,HQL是很有意识的被设计为全然面向对象 ...

  3. Web API-路由(二)

    路由匹配主要有三个阶段: 1.将URI匹配到一个路由模版: 2.选择一个controller 3.选择一个action: 可以使用系统提供的拓展点,修改默认的匹配与选择逻辑规则.   路由模版: 路由 ...

  4. qml能够这么玩

    Qt 5以后qmlscene被qml所替代,/usr/bin/qml能够用来执行.qml文件.所以,我们就能够和sh一样的来写界面了. #!/usr/bin/env qml import QtQuic ...

  5. grunt的基本概念和使用

    grunt的基本概念和使用 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版 ...

  6. 去除a标签链接触摸时产生边框

    排除误解 网络资料说这个属性只用于iOS(iPhone和iPad),其实是错误的,android手机大部分也是支持的,只是显示效果不一样,移动开发并不成熟,更多的还需要大家去实践来辨别真伪- - -w ...

  7. 第4章1节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览OVERVIEW.TXT翻译参考(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...

  8. .NET程序保护专家.NET Reactor发布4.7版本

    .NET Reactor是一款功能强大的代码保护以及许可授权管理系统. 关于代码混淆,针对.NET程序程序而言,.NET Reactor保护的程序目前还没有被破解过.这与.NET Reactor的保护 ...

  9. openwrt的GPIO控制

    为什么有些GPIO可以在/sys/class/gpio中控制,而有些不行呢? 先来看一看普通不需要C程序而是使用脚本的控制方法(Linux普遍适用): First step is making GPI ...

  10. uva 11181 - Probability|Given

    条件概率公式:P( A|B ) = P( AB ) / P( B ) 表示在事件B发生的前提,事件A发生的可能性: 问题的: 复位事件E:r个人买东西: 事件Ei:文章i个人买东西: 的要求是P( E ...