Преобразование запроса CURL в HTTP-запрос Java
у меня есть следующий запрос curl может кто-нибудь пожалуйста, подтвердите мне, что будет subesquest HTTP-запроса
curl -u "Login-dummy:password-dummy" -H "X-Requested-With: Curl" "https://qualysapi.qualys.eu/api/2.0/fo/report/?action=list" -k
это будет что-то вроде ?
String url = "https://qualysapi.qualys.eu/api/2.0/fo/report/";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET"); ..... //incomplete
может ли кто-нибудь быть достаточно любезным, чтобы помочь мне полностью преобразовать вышеуказанный запрос curl в httpreq.
спасибо заранее.
Суви
3 ответов
существует множество способов достичь этого. Ниже один простейший на мой взгляд, согласитесь, что он не очень гибкий, но работает.
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.codec.binary.Base64;
public class HttpClient {
public static void main(String args[]) throws IOException {
String stringUrl = "https://qualysapi.qualys.eu/api/2.0/fo/report/?action=list";
URL url = new URL(stringUrl);
URLConnection uc = url.openConnection();
uc.setRequestProperty("X-Requested-With", "Curl");
String userpass = "username" + ":" + "password";
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty("Authorization", basicAuth);
InputStreamReader inputStreamReader = new InputStreamReader(uc.getInputStream());
// read this input
}
}
Я не уверен, что HttpURLConnection
ваш лучший друг здесь. Я думаю Apache HttpClient является лучшим вариантом здесь.
на всякий случай вы должны использовать HttpURLConnection
, вы можете попробовать эти ссылки:
вы устанавливаете имя пользователя / пароль, параметр HTTP-заголовка и игнорируете проверку сертификата SSL.
- Как установить имя пользователя / пароль проверьте этот поток:подключение к удаленному URL, который требует аутентификации с помощью Java
- Как установить параметры eader посмотрите на эту тему:как изменить заголовок HttpUrlConnection
- как игнорировать проверку сертификата SSL описано здесь http://www.obsidianscheduler.com/blog/ignoring-self-signed-certificates-in-java .
HTH
ниже работал для меня:
Authenticator.setDefault(new MyAuthenticator("user@account","password"));
-------
public MyAuthenticator(String user, String passwd){
username=user;
password=passwd;
}