我正在使用 CXF 3.1.2 开发 Rest web 服务和客户端,我几乎没有澄清如下,
服务:
import javax.jws.WebService;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
public class GenServiceImpl {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.TEXT_PLAIN)
@Path("/agentLogin/{ext}")
public String agentLogin(@PathParam("ext") Integer ext) {
return "EventAgentLoggedIn";
}
@POST
@Produces(MediaType.TEXT_PLAIN)
@Consumes({"application/xml", MediaType.TEXT_PLAIN})
@Path("/agentLogout")
public String agentLogout(String ext) {
return "EventAgentLoggedOut";
}
}
客户:
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.client.WebClient;
public class TestClient {
static final String REST_URI = "http://localhost:8080/RestfulSample/Restful";
public static void main(String[] args) {
WebClient client = WebClient.create(REST_URI);
//Get
client.path("agentLogin").path(new Integer(1234)).accept(MediaType.TEXT_PLAIN);
String agentLoginResponse = client.get(String.class);
System.out.println(agentLoginResponse);
client.reset();
//Post
client.path("agentLogout").accept(MediaType.TEXT_PLAIN);
Response agentLogoutResponse = client.post("10245");
System.out.println(agentLogoutResponse.readEntity(String.class));
client.reset();
}
说明:
在我上面的例子中 - 在服务类 Post 方法(agentLogout)中,如果我替换为,我会收到错误
@Consumes({"application/xml", MediaType.TEXT_PLAIN})
,@Consumes(MediaType.TEXT_PLAIN)
而它在 Get 方法(agentLogin)中工作正常,我可以知道为什么会这样吗?使用是正确的
client.reset();
- 在这里我尝试使用单个 WebClient 来访问我的所有方法。您能否让我知道我在示例中尝试的最佳实践是什么?如果您能在这里纠正我,我们将不胜感激
谢谢,