Einstellung der Länge des Inhalts von HTTP-POST-Anforderung
Ich versuche einen Http-POST-request, apache-HTTP-client. Ich bin versucht zu kopieren der Inhalt einer HTTP-POST-Anforderung (erhalten auf meine Anwendung) zu einem anderen HTTP-POST-Anforderung (initiiert von meiner Anwendung auf eine andere URL). Code ist unten dargestellt:
httpPost = new HttpPost(inputURL);
//copy headers
for (Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements();) {
String headerName = e.nextElement().toString();
httpPost.setHeader(headerName, request.getHeader(headerName));
}
BufferedInputStream clientToProxyBuf = new BufferedInputStream(request.getInputStream());
BasicHttpEntity basicHttpEntity = new BasicHttpEntity();
basicHttpEntity.setContent(clientToProxyBuf);
basicHttpEntity.setContentLength(clientToProxyBuf.available());
httpPost.setEntity(basicHttpEntity);
HttpResponse responseFromWeb = httpclient.execute(httpPost);
Grundsätzlich bin ich versucht zu implementieren eines proxy-Anwendung, die eine url als parameter, verkehrten die Anfrage an die URL an und dann dazu dienen, Seiten usw. im custom-look-and-feel.
Hier request
ist HttpServletRequest. Ich bin vor problem in der Einstellung der Länge des Inhalts. Durch Debuggen habe ich herausgefunden, dass clientToProxyBuf.available()
ist nicht, mir korrekte Länge der input-stream, und ich bin immer Http Fehler 400 IE und Error 354 (net::ERR_CONTENT_LENGTH_MISMATCH): The server unexpectedly closed the connection
in Chrom.
Mache ich es falsch? Gibt es eine andere Möglichkeit es zu erreichen?
InformationsquelleAutor Umer Hayat | 2012-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
War es ziemlich einfach und sehr offensichtlich. Ich nur benötigt, um die Länge des Inhalts von header:
InformationsquelleAutor Umer Hayat
Den
available()
Funktion nicht die tatsächliche Länge des Inhalts der stream, eherIch schlage vor, Sie Lesen Sie zuerst den gesamten Inhalt aus dem stream, und legen Sie dann, um den Inhalt, anstatt das stream-Objekt. So haben Sie auch die tatsächliche Länge der Inhalte.
das Auslesen von Inhalten aus Strom machen es mit weniger für Sie verlangen. Ich glaube nicht, dass es funktionieren würde. Vielen Dank für Eure Hilfe 🙂
Ich meinte zu sagen, dass anstatt zu passen die Strom, und übergibt den Inhalt.
InformationsquelleAutor Pradeep Pati