2012-03-13 24 views
6

हाय मैं मुसीबत मैं शोकहारा services.I jax-रु का उपयोग कर एक वेब सेवा है जिसके नीचेपढ़ें http पोस्ट हेडर

@Path("/users") 
public class Welcome { 
@POST 
@Consumes("text/xml") 
@Produces("text/xml") 
public Response welcome(String incomingXML){ 
return Response.status(200).entity("timestamp : " + incomingXML).build(); 
} 
} 

मैं सेवा का परीक्षण करने के लिए निम्न परीक्षण ग्राहक का उपयोग दिखाया गया है बनाया जानने के लिए कोशिश कर रहा हूँ कर रहा हूँ

public class TestService { 
public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException { 
ClientConfig config = new DefaultClientConfig(); 
Client client=Client.create(config); 
WebResource service=client.resource(getBaseURI()); 
String urlString = "http://localhost:8080/JaXRSDemo/rest/users"; 
URL url = new URL(urlString); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 

// set up url connection to get retrieve information back 
con.setRequestMethod("POST"); 
con.setDoInput(true); 

// stuff the Authorization request header 
byte[] encodedPassword = (userName + ":" + password).getBytes(); 

con.setRequestProperty("Authorization",encodedPassword.toString()); 
Customer customer=new Customer(); 
customer.setName("noobstre"); 
customer.setPin(123455); 

ClientResponse response=service.path("rest").path("users").type(MediaType.APPLICATION_XML).post(ClientResponse.class,customer); 
System.out.println(" response " + response.getEntity(String.class)); 
} 
private static URI getBaseURI() { 
return UriBuilder.fromUri("http://localhost:8080/JaXRSDemo").build(); 
} 
} 

मैं सर्वर साइड पर शीर्ष लेख में पासवर्ड का उपयोग करना चाहते हैं और database.The समस्या का सामना करना पड़ रहा हूँ के साथ एक देखने है कि कैसे मैं सर्वर पर हेडर पढ़ा करते है।

उत्तर

7

मैं जर्सी क्लाइंट के प्रयोग

// clientside

ClientConfig config = new DefaultClientConfig(); 
    Client client = Client.create(config); 
    final String userName = "admin"; 
    final String password = "admin"; 
    String cred = userName + ":" + password; 
    WebResource service = client.resource(getBaseURI()); 

    Customer customer = new Customer(); 
    customer.setName("noob"); 
    customer.setPin(123455); 
    ClientResponse response = service.path("rest").path("users") 
      .accept(MediaType.APPLICATION_XML) 
      .header("Authorization", cred) 
      .post(ClientResponse.class, customer); 

    System.out.println(" response " + response.getEntity(String.class)); 

सर्वर साइड

@Path("/users") 
public class Welcome { 

@POST 
@Consumes(MediaType.APPLICATION_XML) 
@Produces(MediaType.APPLICATION_XML) 
public Response welcome(String incomingXML, @Context HttpHeaders headers) { 

    String s = headers.getRequestHeaders().getFirst("authorization"); 

    return Response.status(200).entity("timestamp : " + incomingXML + s) 
      .build(); 
} 

}

10

मैं Jax-RS साथ बहुत परिचित नहीं हूँ, लेकिन आप निम्न विधियों का उपयोग कर सकते हैं शीर्ष लेख जानकारी आप देख रहे हैं पाने के लिए:

1.) का प्रयोग करें @HeaderParam

/**Server side******/ 
@Path("/users") 
public class Welcome { 

    @POST 
    @Consumes("text/xml") 
    @Produces("text/xml") 
    public Response welcome(String incomingXML, @HeaderParam("Authorization") String authString) 
    { 
     //Use authString here 
     return Response.status(200).entity("timestamp : " + incomingXML).build(); 
    } 
} 

2.) @Context

/**Server side******/ 
@Path("/users") 
public class Welcome { 

    @POST 
    @Consumes("text/xml") 
    @Produces("text/xml") 
    public Response welcome(String incomingXML, @Context HttpHeaders headers) 
    { 
     //Get Authorization Header 
     String authString = headers.getRequestHeader("Authorization").get(0); 

     return Response.status(200).entity("timestamp : " + incomingXML).build(); 
    } 
} 

आशा है कि इससे मदद मिलती है!

+0

धन्यवाद संकेत के लिए mrdc पर इसे हल! –

संबंधित मुद्दे