setrequestmethod http_ok example espaƱol ejemplo java http

http_ok - urlconnection java ejemplo



AƱadiendo encabezado para HttpURLConnection (6)

Con RestAssurd también puedes hacer lo siguiente:

String path = baseApiUrl; //This is the base url of the API tested URL url = new URL(path); given(). //Rest Assured syntax contentType("application/json"). //API content type given().header("headerName", "headerValue"). //Some API contains headers to run with the API when(). get(url). then(). statusCode(200); //Assert that the response is 200 - OK

Estoy tratando de agregar un encabezado para mi solicitud utilizando HttpUrlConnection pero el método setRequestProperty() no parece funcionar. El lado del servidor no recibe ninguna solicitud con mi encabezado.

HttpURLConnection hc; try { String authorization = ""; URL address = new URL(url); hc = (HttpURLConnection) address.openConnection(); hc.setDoOutput(true); hc.setDoInput(true); hc.setUseCaches(false); if (username != null && password != null) { authorization = username + ":" + password; } if (authorization != null) { byte[] encodedBytes; encodedBytes = Base64.encode(authorization.getBytes(), 0); authorization = "Basic " + encodedBytes; hc.setRequestProperty("Authorization", authorization); }


Debido a que no veo este bit de información en las respuestas anteriores, la razón por la que el fragmento de código publicado originalmente no funciona correctamente es porque la variable encodedBytes es un byte[] y no un valor de String . Si pasa el byte[] a una new String() como se muestra a continuación, el fragmento de código funciona perfectamente.

encodedBytes = Base64.encode(authorization.getBytes(), 0); authorization = "Basic " + new String(encodedBytes);


Finalmente esto me funcionó.

private String buildBasicAuthorizationString(String username, String password) { String credentials = username + ":" + password; return "Basic " + new String(Base64.encode(credentials.getBytes(), Base64.DEFAULT)); }


He usado el siguiente código en el pasado y funcionó con la autenticación básica habilitada en TomCat:

URL myURL = new URL(serviceURL); HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection(); String userCredentials = "username:password"; String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes())); myURLConnection.setRequestProperty ("Authorization", basicAuth); myURLConnection.setRequestMethod("POST"); myURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); myURLConnection.setRequestProperty("Content-Length", "" + postData.getBytes().length); myURLConnection.setRequestProperty("Content-Language", "en-US"); myURLConnection.setUseCaches(false); myURLConnection.setDoInput(true); myURLConnection.setDoOutput(true);

Puedes probar el código anterior. El código anterior es para POST, y puede modificarlo para GET


Si está utilizando Java 8, use el código a continuación.

URLConnection connection = url.openConnection(); HttpURLConnection httpConn = (HttpURLConnection) connection; String basicAuth = Base64.getEncoder().encodeToString((username+":"+password).getBytes(StandardCharsets.UTF_8)); httpConn.setRequestProperty ("Authorization", "Basic "+basicAuth);


Tu código está bien. También puedes usar lo mismo de esta manera.

public static String getResponseFromJsonURL(String url) { String jsonResponse = null; if (CommonUtility.isNotEmpty(url)) { try { /************** For getting response from HTTP URL start ***************/ URL object = new URL(url); HttpURLConnection connection = (HttpURLConnection) object .openConnection(); // int timeOut = connection.getReadTimeout(); connection.setReadTimeout(60 * 1000); connection.setConnectTimeout(60 * 1000); String authorization="xyz:xyz$123"; String encodedAuth="Basic "+Base64.encode(authorization.getBytes()); connection.setRequestProperty("Authorization", encodedAuth); int responseCode = connection.getResponseCode(); //String responseMsg = connection.getResponseMessage(); if (responseCode == 200) { InputStream inputStr = connection.getInputStream(); String encoding = connection.getContentEncoding() == null ? "UTF-8" : connection.getContentEncoding(); jsonResponse = IOUtils.toString(inputStr, encoding); /************** For getting response from HTTP URL end ***************/ } } catch (Exception e) { e.printStackTrace(); } } return jsonResponse; }

Su código de respuesta de retorno 200 si la autorización es un éxito.