Я отправляю запрос POST, чтобы создать некоторый ресурс данных на сервере. Я получаю код ответа 201 - все в порядке. Но мне также нужно получить 2 заголовка из ответа. Эти заголовки содержат атрибуты созданного ресурса. Я не нашел способ сделать это с помощью API ConnectionRequest.
Класс имеет методы, защищенные от readHeaders (соединение) и getHeader (соединение). Но я не смог их использовать, когда получил ответ - получил исключение.
Пример моего кода показан ниже:
ConnectionRequest reqresp = new ConnectionRequest () {
protected void buildRequestBody (java.io.OutputStream os) {
Logger.inst ().write ("buildRequestBody");
final String body = "Dummy Request Body"; // necessary for my request
try {
os.write (body.getBytes () );
}
catch (Exception ex) {
final String errMsg = ex.toString ();
Logger.inst ().write (errMsg);
throw new RuntimeException (errMsg);
}
}
protected void readResponse (InputStream input) throws IOException {
// Actually this method will not be called.
Logger.inst ().write ("readResponse");
String respText;
try {
respText = Util.readToString (input);
}
catch (Exception ex) {
final String errMsg = ex.toString ();
Logger.inst ().write (errMsg);
throw new RuntimeException (errMsg);
}
Logger.inst ().write (respText);
}
};
reqresp.setUrl ("MY SERVER URL");
reqresp.setPriority (ConnectionRequest.PRIORITY_HIGH);
reqresp.setPost (true);
reqresp.addRequestHeader ("header1", "val1");
reqresp.addRequestHeader ("Content-type", "application/json");
reqresp.addResponseCodeListener (new ActionListener () {
public void actionPerformed (ActionEvent ae) {
Logger.inst ().write ("ResponseCodeListener:");
Logger.inst ().write (ae.toString () );
if (ae instanceof NetworkEvent) {
NetworkEvent evt = (NetworkEvent)ae;
Logger.inst ().write ("message: " + evt.getMessage () );
Logger.inst ().write ("response code: " + evt.getResponseCode () );
}
}
});
reqresp.addResponseListener (
new ActionListener () {
public void actionPerformed (ActionEvent ae) {
Logger.inst ().write ("ResponseCodeListener:");
Logger.inst ().write (ae.toString () );
if (ae instanceof NetworkEvent) {
NetworkEvent evt = (NetworkEvent)ae;
Logger.inst ().write ("message: " + evt.getMessage () );
Logger.inst ().write ("response code: " + evt.getResponseCode () );
}
}
}
);
NetworkManager.getInstance ().addToQueue (reqresp);