图片 7

curl -windows下接口通讯

1,下载curl —–url命令传输工具

android的app作为服务端首先其实要考虑保活的问题,但是这个暂不考虑,程序挂了就通讯不上了,再重新打开就是了,经过测试,在启动server之后让app进入后台,程序还是可以存活几个小时的(没有测试更长的时间,注意,这是在不开其他app的情况下,在开其他app的情况下有时进程会被kill)。

2,配置curl环境变量

这里的通讯主要是在电脑端通过curl发送命令(url),然后android端处理数据并返回结果。

3,在cmd环境中使用

curl是利用URL语法在命令行方式下工作的开源文件传输工具。

 

这里我下载的是window下可执行程序curl,是在一个人分享到网盘的。在官网我没有找到可执行的curl,只找到了源码(要编译的)。虽然下面有人家的window端的下载链接,但是我之前没有找到(后面终于找到了)。

举例:curl -G 

进这个网站

图片 1

 

一直往下拖。下这个。

使用:curl -G “www.baidu.com”

图片 2

 

这是盗图的

图片 3

我是win7  64位,因此使用I386下的curl.exe工具。

 

cmd进入控制台,然后通过cd命令进入到curl.exe所在的目录。

 

进入到该目录后,执行curl –help测试。

 

图片 4

最原始的批量通讯返回

这是盗图的

图片 5

出现这些信息就表示curl可用。

 

试试输入这个,看是否能正常通讯。

 

curl

可以将通讯命令保存为bat格式文件,通过cmd运行访问

至此,curl可用,下面开始设置服务端。

 

git上有一些开源库可以用Nanohttpd、AndServer。

我之前用的Nanohttpd好像有点问题后来就弃用了(应该是我的锅。不过我还是感觉这个是用于java的我,因为我记得运行sample响应ok,但是上传文件好像有点问题,缺乏某些类),然后就用了AndServer。

AndServer地址:

通过运行sample可以大致了解通讯的过程。

至于具体怎么添加到自己的项目中,在gradle中添加依赖,然后将sample中的代码copy到自己的项目中即可。

compile’com.yanzhenjie:andserver:1.0.3′

app运行之后,打开server,然后就可以进行通讯了。

比如,上传,命令如下:

curl -F “filename=@你好.txt”

192.168.3.169是android设备的ip地址,8080是端口号。(本质是socket通讯?这方面我没有深入了解,http通讯?)

在测试上传功能过程中发现一个问题,包含中文字符的文件名传输到android端之后显示的是乱码(英文则不会出现此问题)。

上传文件默认保存在sdcard目录下。

解决方法:

在RequestUploadHandler类中设置传输的格式,具体代码:

fileUpload.setHeaderEncoding(“gbk”);

图片 6

然后进行格式转换之后才能得到正确的中文字。

String s =newString(fileItem.getName().getBytes(),”UTF-8″);

上传成功后会返回ok。

图片 7

格式不一致然后导致了乱码(具体原因待分析,这是我偶然尝试上传gbk格式的中文然后发现此时android设备中的文件名没有乱码发现的)。

关于登录,demo中默认账号和密码为123。

if(“123″.equals(userName) &&”123”.equals(password)) 

因此,发送命令。

curl -d “userName=123&password=123”

参考链接:

windows(64位)下使用curl命令

Curl windows下载地址

android充当server服务器