在之前的文章中,我们了解到了如何进行API的简单调用,这仅仅输入 GET类型的操作,而现在我们需要对网站进行POST。
首先我们安装Okhttp3的依赖库
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.1.0</version>
</dependency>
使用POST 与GET 不同的是,GET仅仅只是向站点发出请求,然后接受返回的信息,而POST则是在请求站点的同时,向站点提交表单信息(如账号密码等)即在构建Requset对象时加入post()
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.FormBody;
import okhttp3.FormBody.Builder;
public class FormPoster {
/**
向指定的 url 提交数据
*/
public String postContent(String url, Map formData) {
// okHttpClient 实例
OkHttpClient okHttpClient = new OkHttpClient();
//post方式提交的数据
Builder builder = new FormBody.Builder();
// 放入表单数据
for (String key : formData.keySet()) {
builder.add(key, formData.get(key));
}
// 构建 FormBody 对象
FormBody formBody = builder.build();
// 指定 post 方式提交FormBody
Request request = new Request.Builder().url(url).post(formBody).build();
// 使用client去请求
Call call = okHttpClient.newCall(request);
// 返回结果字符串
String result = null;
try {
// 获得返回结果
result = call.execute().body().string();
} catch (IOException e) {
// 抓取异常
System.out.println("request " + url + " error . ");
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
String url = "https://gitee.com/login";
Map formData = new HashMap();
formData.put("user[login]", "17177466748");
FormPoster poster = new FormPoster();
String content = poster.postContent(url, formData);
System.out.println("API调用结果");
System.out.println(content);
}
}