Restful Webservices在Dropwizard中使用Curl命令发送请求
问题描述:
我面临来自curl
和浏览器POST请求的问题。Restful Webservices在Dropwizard中使用Curl命令发送请求
package name.christianson.mike.resource;
import com.google.common.base.Optional;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import name.christianson.mike.model.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
@Path("/time")
//@Produces(MediaType.APPLICATION_JSON)
public class TimeResource {
@GET
public Time getTime(@QueryParam("timezone") Optional<String> timezone) {
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//TimeZone timeZone = TimeZone.getTimeZone(timezone.or(defaultTimezone));
//formatter.setTimeZone(timeZone);
String formatted = formatter.format(new Date());
return new Time(formatted);
}
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public String getTrackInJSON() {
System.out.println("fdfsf");
//Track track = new Track();
//track.setTitle("Enter Sandman");
//track.setSinger("Metallica");
return "HI";
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String createTrackInJSON(@FormParam("param1") String param1) {
//String result = "Track saved : " + track;
System.out.println(param1);
return param1+"fdf";
}
}
在dropwizard我的罐子运行......我需要申请后request..i与浏览器表单提交审判,也没有工作..
于是,我就卷曲,但它也没有工作。
curl -X POST -d "param1=dds" http://localhost:9179/time/post
我YML文件
defaultTimezone: UTC
server:
applicationConnectors:
- type: http
port: 9179
outputBufferSize: 32KiB
idleTimeout: 30 seconds
minBufferPoolSize: 64 bytes
bufferPoolIncrement: 1KiB
maxBufferPoolSize: 64KiB
acceptorThreads: 1
selectorThreads: 2
acceptQueueSize: 1024
reuseAddress: true
soLingerTime: 600s
adminConnectors:
- type: http
port: 9180
答
那是因为你没有在命令中指定的内容类型
尝试调用该命令:
curl -X POST -d 'param1=dds' -H "Content-Type: application/x-www-form-urlencoded" http://localhost:9179/time/post
我看到的只是一个GET呼叫。没有看到POST的资源。 – dkulkarni
你的意思是“没有工作”?返回的错误是什么? – condit