标题: 用okHttp封装好的小工具 签到 刷帖 刷楼神器??
时间: 2019-06-23
import okhttp3.*;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
import static HttpTools.OkHttpRequestClient.CONTENTTYPE;
public class Demo1 {
public static void main(String[] args) throws Exception {
String cookieStr;
Response response = postMan("https://hu60.cn/q.php/user.login.html?u=index.index.html", "", "form", "application/x-www-form-urlencoded; charset=UTF-8",
"type=1&name=hik&pass=aaaaaaaaaa&go=%E7%99%BB%E5%BD%95");
// 获取cookie
List<String> headers = response.headers("Set-Cookie");
cookieStr = cookieHeader(headers);
if (response.isSuccessful()) {
System.out.println(response.body().string());
for (int i = 0; i < 5; i++) {
Response form = postMan("https://hu60.cn/q.php/msg.index.send.22230.html", cookieStr, "form",
"", "content=你好帅&go=%E5%9B%9E%E5%A4%8D");
System.out.println("执行+1");
}
} else {
System.out.println(response.body().string());
throw new IOException();
}
}
private static String cookieHeader(List<String> cookies) {
StringBuilder cookieHeader = new StringBuilder();
for (String cookie : cookies) {
cookieHeader.append(cookie);
}
return cookieHeader.toString();
}
/**
* post访问
* @param url 请求地址
* @param cookieStr cookie
* @param submitType 提交方式 from表单跟json方式 一般from表单
* @param contentType 可为空字符串
* @param params 提交的参数 例如:name=zhangsan&pass=mima
* @return
* @throws IOException
*/
private static Response postMan(String url, String cookieStr, String submitType, String contentType, String params) throws Exception {
String[] paramses;
if (params.contains("=") && params.contains("&")) {
paramses = params.split("&");
}else if (params.contains("=") && !params.contains("&")){
paramses=new String[1];
paramses[0]=params;
}else {
throw new Exception("参数请确保都为键值对形式");
}
Map<String, String> map = new HashMap<>();
FormBody.Builder builder = new FormBody.Builder();
RequestBody requestBody = null;
FormBody formBody = null;
Request requests = null;
final OkHttpClient CLIENT = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
if ("json".equals(submitType)) {
requestBody = RequestBody.create(CONTENTTYPE, params);
requests = new Request.Builder().url(url)
.post(requestBody)
.header("Content-Type", contentType)
.header("Cookie", cookieStr)
.build();
} else if ("form".equals(submitType) && paramses != null) {
for (String s : paramses) {
String[] ss = s.split("=");
map.put(ss[0], ss[1]);
}
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
builder.add(entry.getKey(), entry.getValue());
}
formBody = builder.build();
requests = new Request.Builder().url(url)
.post(formBody)
.header("Content-Type", contentType)
.header("Cookie", cookieStr)
.build();
}
Response responses = CLIENT.newCall(requests).execute();
return responses;
}
private static Response getMan(String url, String cookieStr, String contentType) throws IOException {
final OkHttpClient CLIENT = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
Request requests = new Request.Builder().url(url)
.get()
.header("Content-Type", contentType)
.header("Cookie", cookieStr)
.build();
Response responses = CLIENT.newCall(requests).execute();
return responses;
}
}
『回复列表(4|隐藏机器人聊天)』