okhttp3的应用 java接口 登录,添加信息,上传图片


最近接的一个项目
请求头,然后是接口。记录一下。
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);
  	}
	
	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
okhttp3是一个用于处理HTTP请求的开源库。它提供了简单且强大的API,使得在Android和Java应用程序中进行网络通信变得更加容易。下面是一个使用okhttp3的示例: 1. 首先,你需要在你的项目中添加okhttp3的依赖。你可以在项目的build.gradle文件中添加以下代码: ```groovy dependencies { implementation 'com.squareup.okhttp3:okhttp:3.14.9' } ``` 2. 创建一个OkHttpClient对象。OkHttpClient是okhttp3库的核心类,它负责发送和接收HTTP请求。你可以使用默认的构造函数创建一个OkHttpClient对象,也可以根据需要进行自定义配置。以下是一个简单的示例: ```java OkHttpClient client = new OkHttpClient(); ``` 3. 创建一个Request对象。Request对象表示一个HTTP请求,包括请求的URL、请求方法、请求头和请求体等信息。你可以使用Request.Builder来构建一个Request对象。以下是一个示例: ```java Request request = new Request.Builder() .url("https://api.github.com/repos/square/okhttp/issues") .header("User-Agent", "OkHttp Headers.java") .addHeader("Accept", "application/json; q=0.5") .build(); ``` 4. 发送请求并获取响应。使用OkHttpClient的newCall方法创建一个Call对象,并使用execute方法发送请求并获取响应。以下是一个示例: ```java try { Response response = client.newCall(request).execute(); // 处理响应数据 String responseData = response.body().string(); // ... } catch (IOException e) { e.printStackTrace(); } ``` 以上是一个简单的okhttp3应用示例,你可以根据自己的需求进行进一步的定制和扩展。如果你想了解更多关于okhttp3的详细信息,可以参考官方文档:[okhttp3官方文档](https://square.github.io/okhttp/3.x/okhttp/)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值