public static ResponseParser performHttpRequest( String hostname, int hostPort, RequestBuilder builder) throws IOException { Socket socket = new Socket(hostname, hostPort); OutputStream socketOut = socket.getOutputStream(); InputStream socketIn = socket.getInputStream(); builder.send(socketOut); socketOut.flush(); try { return new ResponseParser(socketIn); } finally { socketOut.close(); socket.close(); } }
private void updateFeatureLocation(final AnnotationInfo originalInfo) { String url = Annotator.getRootUrl() + "annotator/updateFeatureLocation"; RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, URL.encode(url)); builder.setHeader("Content-type", "application/x-www-form-urlencoded"); StringBuilder sb = new StringBuilder(); sb.append( "data=" + AnnotationInfoConverter.convertAnnotationInfoToJSONObject(this.internalAnnotationInfo) .toString()); final AnnotationInfo updatedInfo = this.internalAnnotationInfo; builder.setRequestData(sb.toString()); enableFields(false); RequestCallback requestCallback = new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { JSONValue returnValue = JSONParser.parseStrict(response.getText()); GWT.log("return value: " + returnValue.toString()); enableFields(true); Annotator.eventBus.fireEvent( new AnnotationInfoChangeEvent( updatedInfo, AnnotationInfoChangeEvent.Action.UPDATE)); updateDetailData(updatedInfo); redrawExonTable(); } @Override public void onError(Request request, Throwable exception) { // todo: handling different types of errors Bootbox.alert("Error updating exon: " + exception.toString()); coordinatesToPrime(originalInfo.getMin(), originalInfo.getMax()); enableFields(true); } }; try { builder.setCallback(requestCallback); builder.send(); } catch (RequestException e) { Bootbox.alert(e.getMessage()); enableFields(true); } }
public void deliver() { String url = Configuration.getEndpointUrl(); RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url); List<PerformanceTiming> timings = deliveryQueue.popTimings(); List<IncidentReport> incidents = deliveryQueue.popIncidents(); ResultInjector injector = new RequestBodyInjector(); HeaderInjector.Result result = injector.inject(builder, timings, incidents); if (result.shouldSend()) { MeasurementRequestCallback callback = new MeasurementRequestCallback(timings, incidents); builder.setCallback(callback); try { builder.send(); } catch (RequestException e) { deliveryQueue.pushTiming(timings); deliveryQueue.pushIncident(incidents); // TODO Consider lost piggybacked timings as well } } }
private Request executeRequest( final AsyncCallback<DMRResponse> resultCallback, final ModelNode operation) { if (idCounter == Long.MAX_VALUE) { idCounter = 0; } Request request = null; try { final String id = String.valueOf(idCounter++); trace(Type.BEGIN, id, operation); final RequestBuilder requestBuilder = chooseRequestBuilder(operation); trace(Type.SERIALIZED, id, operation); final RequestCallback requestCallback = new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { trace(Type.RECEIVE, id, operation); int statusCode = response.getStatusCode(); if (200 == statusCode) { resultCallback.onSuccess( new DMRResponse( requestBuilder.getHTTPMethod(), response.getText(), response.getHeader(HEADER_CONTENT_TYPE))); } else if (401 == statusCode || 0 == statusCode) { resultCallback.onFailure(new DispatchError("Authentication required.", statusCode)); } else if (403 == statusCode) { resultCallback.onFailure(new DispatchError("Authentication required.", statusCode)); } else if (307 == statusCode) { String location = response.getHeader("Location"); Log.error("Redirect '" + location + "'. Could not execute " + operation.toString()); redirect(location); } else if (503 == statusCode) { resultCallback.onFailure( new DispatchError( "Service temporarily unavailable. Is the server still booting?", statusCode)); } else { StringBuilder sb = new StringBuilder(); sb.append("Unexpected HTTP response").append(": ").append(statusCode); sb.append("\n\n"); sb.append("Request\n"); sb.append(operation.toString()); sb.append("\n\nResponse\n\n"); sb.append(response.getStatusText()).append("\n"); String payload = response.getText().equals("") ? "No details" : ModelNode.fromBase64(response.getText()).toString(); sb.append(payload); resultCallback.onFailure(new DispatchError(sb.toString(), statusCode)); } trace(Type.END, id, operation); } @Override public void onError(Request request, Throwable e) { trace(Type.RECEIVE, id, operation); resultCallback.onFailure(e); trace(Type.END, id, operation); } }; requestBuilder.setCallback(requestCallback); request = requestBuilder.send(); trace(Type.SEND, id, operation); } catch (RequestException e) { resultCallback.onFailure(e); } return request; }