java - 在 Dropwizard 中使用 Curl 命令实现 Restful Webservices Post 请求

标签 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,但它也不起作用。

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

关于java - 在 Dropwizard 中使用 Curl 命令实现 Restful Webservices Post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33461955/

相关文章:

java - 热衷于从 netsuite 获取最后修改的贷项凭证记录

java - Spring MVC Rest Controller @RequestBody 解析

java - 如何创建 hibernate 复合键并从表中获取值

java - 使用 ActionListener 清除 JPanel 中的图形

java - Web Service调用的重试机制

c# - "Flexible Webservice"的策略

spring - 如何为 Spring REST 服务生成 WADL

wcf - 如何使用 REST/SOAP 端点为 WCF 4.0 服务发布 WSDL

java - 是什么导致 sun.awt.shell.Win32ShellFolder2.initSpecial() 抛出 InternalError?

Java图形库