POST表单数据

在之前的文章中,我们了解到了如何进行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);
 }
 }