这个main方法怎么改写成类


package com.pospal.openplatform;

import com.alibaba.fastjson.JSON;
import com.pospal.openplatform.common.Constants;
import com.pospal.openplatform.product.Product;
import com.pospal.openplatform.product.ProductPageRequest;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.springframework.util.DigestUtils;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;

/**
 * 该类用于测试分页查询商品
 */
public class Main {

    //分页查询全部商品信息
    private static final String QUERY_PRODUCT_PAGES_URL = "customerOpenapi/queryBytel";

    public static void main(String[] args) throws IOException {
        ProductPageRequest productPageRequest = new ProductPageRequest();
        productPageRequest.setAppId(Constants.APP_ID);

        boolean queryNextPage;
        List<Product> allProducts = new ArrayList<>();
            String json = JSON.toJSONString(productPageRequest);
            String httpResponseContent = sendPost(QUERY_PRODUCT_PAGES_URL, json);
            System.out.println("返回值:" + httpResponseContent);
        System.out.println(String.format("总共返回%d个商品", allProducts.size()));
    }

    private static String sendPost(String url, String json) throws IOException {
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        MediaType mediaType = MediaType.parse("application/json");
        //1:appKey,请求体 拼接 2:md5 加密 3:转为大写
        String dataSignature = DigestUtils.md5DigestAsHex((Constants.APP_KEY + json).getBytes()).toUpperCase();

        RequestBody body = RequestBody.create(mediaType, json);
        Request request = new Request.Builder()
                .url(Constants.HOST + url)
                .method("POST", body)
                .addHeader("data-signature", dataSignature)
                .addHeader("User-Agent", "openApi")
                .addHeader("accept-encoding", "gzip,deflate")
                .addHeader("time-stamp", String.valueOf(System.currentTimeMillis()))
                .addHeader("Content-Type", "application/json")
                .build();
        Response response = client.newCall(request).execute();
        return dealGzip(response);
    }

    //返回内容有可能是gzip压缩过的。根据response header 中的Content-Encoding自行解压
    private static String dealGzip(Response response) throws IOException {
        String contenEncodingHeader = response.header("Content-Encoding");
        if ("gzip".equals(contenEncodingHeader)) {
            InputStream inputStream = response.body().byteStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPInputStream gunzip = new GZIPInputStream(inputStream);
            byte[] buffer = new byte[256];
            int n;
            while ((n = gunzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            return out.toString("utf-8");
        }
        return response.body().string();
    }

}

写成什么类?业务类吗,然后在main方法中调用?


 
package com.pospal.openplatform;
 
import com.alibaba.fastjson.JSON;
import com.pospal.openplatform.common.Constants;
import com.pospal.openplatform.product.Product;
import com.pospal.openplatform.product.ProductPageRequest;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.springframework.util.DigestUtils;
 
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.GZIPInputStream;
 
/**
 * 该类用于测试分页查询商品
 */
@Controller
public class MainController {
 
    //分页查询全部商品信息
    private static final String QUERY_PRODUCT_PAGES_URL = "customerOpenapi/queryBytel";
    @RequestMapping("/getProduct")
    @ResponseBody
    public String getProduct() throws IOException {
        ProductPageRequest productPageRequest = new ProductPageRequest();
        productPageRequest.setAppId(Constants.APP_ID);
 
        boolean queryNextPage;
        List<Product> allProducts = new ArrayList<>();
            String json = JSON.toJSONString(productPageRequest);
            String httpResponseContent = sendPost(QUERY_PRODUCT_PAGES_URL, json);
            System.out.println("返回值:" + httpResponseContent);
        return String.format("总共返回%d个商品", allProducts.size());
    }
  
   public static String sendPost(String url, String json) throws IOException {
        OkHttpClient client = new OkHttpClient().newBuilder().build();
        MediaType mediaType = MediaType.parse("application/json");
        //1:appKey,请求体 拼接 2:md5 加密 3:转为大写
        String dataSignature = DigestUtils.md5DigestAsHex((Constants.APP_KEY + json).getBytes()).toUpperCase();
 
        RequestBody body = RequestBody.create(mediaType, json);
        Request request = new Request.Builder()
                .url(Constants.HOST + url)
                .method("POST", body)
                .addHeader("data-signature", dataSignature)
                .addHeader("User-Agent", "openApi")
                .addHeader("accept-encoding", "gzip,deflate")
                .addHeader("time-stamp", String.valueOf(System.currentTimeMillis()))
                .addHeader("Content-Type", "application/json")
                .build();
        Response response = client.newCall(request).execute();
        return dealGzip(response);
    }
 
    //返回内容有可能是gzip压缩过的。根据response header 中的Content-Encoding自行解压
    private static String dealGzip(Response response) throws IOException {
        String contenEncodingHeader = response.header("Content-Encoding");
        if ("gzip".equals(contenEncodingHeader)) {
            InputStream inputStream = response.body().byteStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            GZIPInputStream gunzip = new GZIPInputStream(inputStream);
            byte[] buffer = new byte[256];
            int n;
            while ((n = gunzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            return out.toString("utf-8");
        }
        return response.body().string();
    }
 
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632