在Dropwizard中使用Curl命令的Restful Webservices发布请求

时间:2015-11-01 12:07:06

标签: java web-services rest curl dropwizard

我遇到来自curl和浏览器的POST请求的问题。

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中,我的jar正在运行...我需要请求发送请求..我尝试使用浏览器表单提交,但它也没有用..

所以我尝试了卷曲,但它也没有用。

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

1 个答案:

答案 0 :(得分:0)

那是因为你没有在你的命令中指定内容类型

尝试调用此命令:

curl -X POST -d 'param1=dds' -H "Content-Type: application/x-www-form-urlencoded" http://localhost:9179/time/post