Error: Unsupported Media Type (Codename One)
Error: Unsupported Media Type (Codename One)
我正在尝试从我在 NetBeans IDE 上的 CN1 应用程序发送 POST 请求,但我每次 运行 应用程序 "Error 415: Unsupported Media Type" 时都会收到此错误。这是我的代码:
请求代码:
@Override
protected void onMain_ButtonAction(Component c, ActionEvent event) {
String name=findTextField(c).getText();
String qty=findTextField1(c).getText();
ConnectionRequest r= new ConnectionRequest(){
@Override
protected void readResponse(InputStream input) throws IOException {
}
};
r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
r.setPost(true);
r.setHttpMethod("POST");
r.addArgument("name", name);
r.addArgument("quantity", qty);
NetworkManager.getInstance().addToQueueAndWait(r);
}
}
REST 服务
@POST
@Path("post")
@Consumes("application/json")
public void putJson(Product product) {
String result = "Product recieved : " + product;
System.out.println(""+result);
}
}
Product.java class
class Product {
public String name;
public int quantity;
Product(){
}
}
错误信息的截图请查看附件。
我想要一种情况,当我单击“提交”按钮时,为产品名称和数量输入的值应显示在 REST 控制台上。请在这件事上救救我。
此致,
Yahya-Imam Munir Kolapo
基于POST JSON fails with 415 Unsupported media type, Spring 3 mvc
您需要设置接受请求 header 您可以在 Codename One thru addRequestHeader:
r.addRequestHeader("accept", "application/json");
你遇到的另一个问题有点误导,但我猜网络服务在 body 中接受 JSON 而不是标准的 post 参数,所以这应该可以工作:
final String name = findTextField(c).getText();
final String qty = findTextField1(c).getText();
ConnectionRequest r= new ConnectionRequest(){
@Override
protected void buildRequestBody(OutputStream os) throws IOException {
StringBuilder val = new StringBuilder("{\"name\":\"");
val.append(name);
val.append("\",\"quantity\":");
val.append(qty);
val.append("}");
if(shouldWriteUTFAsGetBytes()) {
os.write(val.toString().getBytes("UTF-8"));
} else {
OutputStreamWriter w = new OutputStreamWriter(os, "UTF-8");
w.write(val.toString());
}
}
@Override
protected void readResponse(InputStream input) throws IOException {
}
};
r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
r.setPost(true);
NetworkManager.getInstance().addToQueueAndWait(r);
我正在尝试从我在 NetBeans IDE 上的 CN1 应用程序发送 POST 请求,但我每次 运行 应用程序 "Error 415: Unsupported Media Type" 时都会收到此错误。这是我的代码:
请求代码:
@Override
protected void onMain_ButtonAction(Component c, ActionEvent event) {
String name=findTextField(c).getText();
String qty=findTextField1(c).getText();
ConnectionRequest r= new ConnectionRequest(){
@Override
protected void readResponse(InputStream input) throws IOException {
}
};
r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
r.setPost(true);
r.setHttpMethod("POST");
r.addArgument("name", name);
r.addArgument("quantity", qty);
NetworkManager.getInstance().addToQueueAndWait(r);
}
}
REST 服务
@POST
@Path("post")
@Consumes("application/json")
public void putJson(Product product) {
String result = "Product recieved : " + product;
System.out.println(""+result);
}
}
Product.java class
class Product {
public String name;
public int quantity;
Product(){
}
}
错误信息的截图请查看附件。 我想要一种情况,当我单击“提交”按钮时,为产品名称和数量输入的值应显示在 REST 控制台上。请在这件事上救救我。
此致,
Yahya-Imam Munir Kolapo
基于POST JSON fails with 415 Unsupported media type, Spring 3 mvc
您需要设置接受请求 header 您可以在 Codename One thru addRequestHeader:
r.addRequestHeader("accept", "application/json");
你遇到的另一个问题有点误导,但我猜网络服务在 body 中接受 JSON 而不是标准的 post 参数,所以这应该可以工作:
final String name = findTextField(c).getText();
final String qty = findTextField1(c).getText();
ConnectionRequest r= new ConnectionRequest(){
@Override
protected void buildRequestBody(OutputStream os) throws IOException {
StringBuilder val = new StringBuilder("{\"name\":\"");
val.append(name);
val.append("\",\"quantity\":");
val.append(qty);
val.append("}");
if(shouldWriteUTFAsGetBytes()) {
os.write(val.toString().getBytes("UTF-8"));
} else {
OutputStreamWriter w = new OutputStreamWriter(os, "UTF-8");
w.write(val.toString());
}
}
@Override
protected void readResponse(InputStream input) throws IOException {
}
};
r.setUrl("http://localhost:8080/webservicess/webresources/getreq/post");
r.setPost(true);
NetworkManager.getInstance().addToQueueAndWait(r);