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 
+0

我看到的只是一个GET呼叫。没有看到POST的资源。 – dkulkarni

+0

你的意思是“没有工作”?返回的错误是什么? – condit

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

尝试调用该命令:

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