最近接的一个项目
请求头,然后是接口。记录一下。
package l*u.com;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.Interceptor.Chain;
import okhttp3.Request.Builder;
public class okHttp {
private static String SecretId="A******w******mo4w20fnrzbxb";
private static String SecretKey = "1x*****25Mf6PlOlg72****82wsob6yL";
public static OkHttpClient Addclient(){//请求头 请求需要开启CORS
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR, -8);//用格林威治时间,减8小时
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", Locale.US);
final String date = sdf.format(calendar.getTime());
System.out.println(date);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
public Response intercept(Chain chain) throws IOException {
String sig = null;
try {
sig = HmacShaUtils.sign(SecretKey,date);
} catch (Exception e) {
}
System.out.println(sig);
String auth = "hmac id=\""+SecretId+"\", algorithm=\"hmac-sha1\", headers=\"x-date source\", signature=\""+sig+"\"";
Builder newBuilder = chain.request().newBuilder();
newBuilder
.addHeader("X-date",date)
.addHeader("X-Requested-With", "XMLHttpRequest")
.addHeader("Source", "source")
.addHeader("Authorization", auth)
;
Request newRequest = newBuilder.build();
return chain.proceed(newRequest);
}
})
.build();
return client;
}
public static void login(String username,String password,String url){//登录
RequestBody requestBody = new FormBody.Builder()
.add("account", username)
.add("password", password)
.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
try {
OkHttpClient client=Addclient();
Response response =client.newCall(request).execute();
String result = response.body().string();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void addUser(String projectId,String userTitle,String telephone,String address,String _ctoken,String url){//添加用户信息
RequestBody requestBody = new FormBody.Builder()
.add("project.id", projectId)
.add("userTitle", userTitle)//telephone
.add("telephone", telephone)
.add("address", address)
//.add("detail", detail)
.add("_ctoken", _ctoken)
.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
try {
OkHttpClient client=Addclient();
Response response =client.newCall(request).execute();
String result = response.body().string();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void addPhoto(String url,File file){//上传图片
OkHttpClient client=new OkHttpClient.Builder()
.build();
MultipartBody.Builder builder=new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "head", RequestBody.create(MediaType.parse("image/jpg"), file));
RequestBody requestBody=builder.build();
Request request=new Request.Builder()
.url(url)
.post(requestBody)
.build();
try {
Response response =client.newCall(request).execute();
String result = response.body().string();
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
return ;
}
return ;
}
public static void main(String[] args) {//测试
System.out.println("-----------------------");
final String url = "https://****/dologin";
String username = "156****0123";
String password = "12***6";
login(username, password,url);
String projectId="795";
String userTitle="***";
String telephone="****";
String address="******";
final String url1 = "https://***/do_add";
String _ctoken="4eb6***61d9";
addUser(projectId, userTitle,telephone,address, _ctoken, url1);
final String url2="https://****/uploadimage";
File file=new File("C:/Users/Administrator/Desktop/test/f1.jpg");
addPhoto(url2,file);
}
}