gpt4 book ai didi

java - REST Web 服务始终使用 CodenameOne 客户端返回 html

转载 作者:行者123 更新时间:2023-11-28 22:06:15 25 4
gpt4 key购买 nike

我已经通过 jerseytomcat 创建了一个网络服务,这里是:

@Path("/hello")
public class Hello {


// This method is called if TEXT_PLAIN is request
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
boolean flag=true;
return "Hello Jersey";
}

// This method is called if XML is request
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello() {
boolean flag=true;
return "<?xml version=\"1.0\"?>" + "<hello> Hello Jersey" + "</hello>";
}

// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
boolean flag=true;
return "<html> " + "<title>" + "Hello Jersey" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}

Codenameone 我这样设置客户端:

public static void getRest(){

String service="http://localhost:8080/com.vogella.jersey.first/rest/hello";

ConnectionRequest req = new ConnectionRequest(){

@Override
protected void postResponse() {

}
@Override
protected void readResponse(InputStream input) throws IOException {
// JSONParser p = new JSONParser();

// System.out.println(Util.readToString(input));

Dialog dd=new Dialog(Util.readToString(input));
hi.addComponent(dd);
}

};

req.setUrl(service);
req.setPost(false);
req.setContentType(MediaType.TEXT_PLAIN);


InfiniteProgress prog = new InfiniteProgress();
Dialog dlg = prog.showInifiniteBlocking();
req.setDisposeOnCompletion(dlg);
NetworkManager.getInstance().addToQueue(req);
}

codenameone 中的默认示例设置了 req.setContentType("text/plain");但是在客户端和 ws 中更改此选项结果是相同的, 我总是得到 html 而不是 xml 或文本...这不是很重要,因为很快我应该得到 json 但是我想在继续之前我必须了解这件事...谢谢

最佳答案

我从未使用过 CodeNameOne,但我很确定 setContentType 设置了 Content-Type header 。在请求中,就是说客户端发送的数据类型就是该内容类型。但是对于 GET 通常没有数据,所以 Content-Type 没有用。

对于一个请求,当你想告诉服务器你想要返回什么内容类型时,你可以设置 Accept header 。当你不设置它时,它通常默认为 */*,这让 Jersey 只能选择一个。在您的情况下,它似乎总是选择 text/html

看起来是 ConnectionRequest ,我没有看到任何 setAccept 方法,但看起来您可以使用 addRequestHeader .于是乎

req.addRequestHeader("Accept", "text/plain");

关于java - REST Web 服务始终使用 CodenameOne 客户端返回 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32711794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com