2011-08-26 18 views
8

yankılanmaya basit sunucu tespit edildi: başarıyla sonrası veri almak mümkün duyuyorumApache httpcore, ElementalHttpServer örnek sınıfını kullanma alınan post verisi

https://hc.apache.org/httpcomponents-core-4.3.x/httpcore/examples/org/apache/http/examples/ElementalHttpServer.java

, amacım bir içine alınan yazılan veri dönüştürmek etmektir dize yazdırabilirim. InputStream'i almak için eneity.getContent() öğesini kullanarak HttpFileHandler'ı aşağıdaki gibi değiştirdim, ancak inputStream'i bir String'e nasıl dönüştürdüğümden emin değilim.

static class HttpFileHandler implements HttpRequestHandler { 

    private final String docRoot; 

    public HttpFileHandler(final String docRoot) { 
    super(); 
    this.docRoot = docRoot; 
    } 

    public void handle(
     final HttpRequest request, 
     final HttpResponse response, 
     final HttpContext context) throws HttpException, IOException { 

    String method = request.getRequestLine().getMethod().toUpperCase(Locale.ENGLISH); 
    if (!method.equals("GET") && !method.equals("HEAD") && !method.equals("POST")) { 
     throw new MethodNotSupportedException(method + " method not supported"); 
    } 
    String target = request.getRequestLine().getUri(); 

    if (request instanceof HttpEntityEnclosingRequest) { 
     HttpEntity entity = ((HttpEntityEnclosingRequest) request).getEntity(); 
     byte[] entityContent = EntityUtils.toByteArray(entity); 
     InputStream inputStream = entity.getContent(); 

     String str= inputStream.toString(); 
     byte[] b3=str.getBytes(); 
     String st = new String(b3); 
     System.out.println(st); 
     for(int i=0;i<b3.length;i++) { 
     System.out.print(b3[i]+"\t"); 
     } 
     System.out.println("Incoming entity content (bytes): " + entityContent.length); 
    } 
} 

} herhangi fikirler için

Teşekkür

İşte

cevap

10

basit konsol günlüğü işleyicisi olduğu; işleyici

package com.mycompany; 

import org.apache.http.*; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.protocol.HttpContext; 
import org.apache.http.protocol.HttpRequestHandler; 
import org.apache.http.util.EntityUtils; 
import org.omg.CORBA.Request; 

import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 

/** 
* Created by IntelliJ IDEA. 
* User: Piotrek 
* To change this template use File | Settings | File Templates. 
*/ 
public class LoggingHandler implements HttpRequestHandler { 
    public void handle(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext httpContext) throws HttpException, IOException { 

     System.out.println(""); // empty line before each request 
     System.out.println(httpRequest.getRequestLine()); 
     System.out.println("-------- HEADERS --------"); 
     for(Header header: httpRequest.getAllHeaders()) { 
      System.out.println(header.getName() + " : " + header.getValue()); 
     } 
     System.out.println("--------"); 

     HttpEntity entity = null; 
     if (httpRequest instanceof HttpEntityEnclosingRequest) 
      entity = ((HttpEntityEnclosingRequest)httpRequest).getEntity(); 

     // For some reason, just putting the incoming entity into 
     // the response will not work. We have to buffer the message. 
     byte[] data; 
     if (entity == null) { 
      data = new byte [0]; 
     } else { 
      data = EntityUtils.toByteArray(entity); 
     } 

     System.out.println(new String(data)); 

     httpResponse.setEntity(new StringEntity("dummy response")); 
    } 
} 

Kayıt org.apache.http.localserver.LocalTestServer kullanarak (o benzer ElementalHttpServer ile - aynı zamanda yukarıda HttpRequestHandler uygulanmasını var):

public static void main(String[] args) throws Exception { 
    LocalTestServer server = new LocalTestServer(null, null); 

    try { 
     server.start();  

     server.register("/*", new LoggingHandler()); 
     server.awaitTermination(3600 * 1000); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     server.stop(); 
    } 

} 
+0

çalışır başlıkları ve yük hem - her isteği (sadece POST) kaydeder Mükemmel, çok teşekkürler! – Hoofamon

+0

Rica ederim :) –

İlgili konular