Problema de acoplamiento de la interfaz

Encuentra la información

Java de Ruoyi envía una solicitud POST a la solicitud de simulación posterior y se
produce una excepción.

Problemas al leer el archivo .properties

Java simula una solicitud de publicación de front-end para obtener datos y se informa un error al principio. El parámetro de enlace contiene -, que es? En la salida. Pero escribir el enlace directamente en Java no tiene este problema, es decir, leer el archivo .properties PropertiesUtil, cambiar el flujo de bytes al flujo de caracteres y obtener el enlace a través del método PropertiesUtil es normal.

public class ProPertiesUtil {
    
    
	private static ProPertiesUtil configManager;
	private static Properties properties;
	//通过私有构造方法读取配置文件里的信息
	private ProPertiesUtil(String path){
    
    
		//String path="test.properties";
		//读取数据
		InputStream is= ProPertiesUtil.class.getClassLoader().getResourceAsStream(path);
		//通过Properties获取
		properties=new Properties();
		try {
    
    
	// 原来的字节流
	//			properties.load(is);
	// 现在的字符流
   //这样输入的时候就可以不是一个一个字节读,而是一个一个字符读,再加上是个Buffer,效率会高很多。
			BufferedReader bf = new BufferedReader(new InputStreamReader(is));
			properties.load(bf);
			is.close();
		} catch (IOException e) {
    
    
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Problema con el archivo sendPost

Pero aun así informé un error. Mi colega me pidió que usara Java de Noy para simular la solicitud de publicación
. Después de usarlo, el ioc informó un error 400.
¡Preguntó nuevamente que se produjo una excepción al enviar una solicitud POST!
El segundo parámetro chino está distorsionado, se puede usar después de una prueba, pero devuelve distorsionado. Así que comparé cuidadosamente los dos archivos. Tanto la solicitud como la recuperación están en chino, por lo que ambas deben transcodificarse a UTF-8.
Si encuentra un problema, cálmese y obsérvelo lentamente. La base es muy importante, de lo contrario, un problema de transcodificación lo atascará.

    public static String sendPost3(String url, String param)
    {
    
    
//        PrintWriter out = null;
        OutputStreamWriter out = null;
//        因为字节-导致链接有错误,所以我改了编码为字符,现在再改回字节
        BufferedReader in = null;
        StringBuilder result = new StringBuilder();
        try
        {
    
    
            String urlNameString = url;
            log.info("sendPost - {}", urlNameString);
            URL realUrl = new URL(urlNameString);
//            URLConnection conn = realUrl.openConnection();
            HttpURLConnection conn =  (HttpURLConnection)realUrl.openConnection();

            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
//            conn.setRequestProperty("contentType", "utf-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
//            out = new PrintWriter(conn.getOutputStream());
//            out.print(param);
            // out = new OutputStreamWriter(conn.getOutputStream());
            out = new OutputStreamWriter(conn.getOutputStream(),"utf-8");
//            问题是因为HttpURLConnection接收数据的时候 字符集默认的是GBK 要转码UTF-8
            out.write(param);
            System.out.println("param------------------------"+param);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
     //    接受有中文还是需要字节码的UTF-8//         in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null)
            {
    
    
                result.append(line);
            }
            log.info("recv - {}", result);
        }
        catch (ConnectException e)
        {
    
    
            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
    
    
            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
    
    
            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
    
    
            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
        }
        finally
        {
    
    
            try
            {
    
    
                if (out != null)
                {
    
    
                    out.close();
                }
                if (in != null)
                {
    
    
                    in.close();
                }
            }
            catch (IOException ex)
            {
    
    
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }


¡Vamos y golpea a los trabajadores!

Supongo que te gusta

Origin blog.csdn.net/qq_39088110/article/details/115347253
Recomendado
Clasificación