当前位置: 首页 > 知识库问答 >
问题:

setContentType(“application/x-www-form-urlencoded”)播放框架2.0。十、

轩辕越泽
2023-03-14

我试图调用Web服务,但在播放框架2.0. x我无法调用任何编码的Web服务。

我已经研究了代码:

public static Result wsAction() {
return async(
    play.libs.WS.url(Play.application().configuration()
        .getString("sms.service.url"))
        .setContentType("application/x-www-form-urlencoded; charset=utf-8")                       
        .post("param1=foo&param2=bar").map(
            new F.Function<WS.Response, Result>() {
                public Result apply(WS.Response response) {
                   return ok(response.toString());
                }
            }
        )
    );
}

参考:https://stackoverflow.com/a/14938117/4410109

我已经尝试了上面的代码在Play框架2.0.8,但我得到了这个错误:

错误:找不到符号。setContentType(“application/x-www-form-urlencoded;charset=utf-8”)

有没有办法在play framework 2.0中设置内容类型。8.

谢谢

编辑:

这是我的代码:

Promise<WS.Response> result2 = WS.url("desired-url")
            .setQueryParameter("sUsername","test")
            .setQueryParameter("sPwd","hbl@1234")
            .setQueryParameter("sMobileno","03332560744")
            .setQueryParameter("sTransaction_id","asdfasdfasdfasdfasdf")
            .setQueryParameter("sMessage","test")
            .post("content");

         WS.Response rs = result2.get();

它返回无效的格式错误。我还在REST客户机上使用表单数据和相同的参数进行了尝试,它还返回了相同的错误“无效格式”。但当我用x-www-form-urlencoded尝试它时,它返回了所需的结果。但是在play 2.0中,我无法设置内容类型。

谢啦

共有3个答案

松雅健
2023-03-14

在play 2.0中,您可以

response().setContentType("application/x-www-form-urlencoded; charset=utf-8");
return ok(response.toString());
戚森
2023-03-14

似乎“setContentType”方法在2.1中可用。0

在2.0.8中,您可以只设置标题

public static Result wsAction() {
return async(
    play.libs.WS.url(Play.application().configuration()
        .getString("sms.service.url"))
        .setHeader(Http.HeaderNames.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=utf-8")                       
        .post("param1=foo&param2=bar").map(
            new F.Function<WS.Response, Result>() {
                public Result apply(WS.Response response) {
                   return ok(response.toString());
                }
            }
        )
    );
}

游戏中的一些信息!博士。

诸葛亮
2023-03-14

如果你POST一个Map[String, Seq[String]的内容类型将被设置为Application/x-wow-form-urlencoded正确。

.post(Map("param1" -> Seq("foo"), "param2" -> Seq("bar")))
 类似资料:
  • 我想在Xamarin用AvPlayer播放视频。网间网操作系统。我在Firebase存储公司工作。如果我从android上传视频,媒体类型设置为mp4,但从iOS上传视频,媒体类型设置为URLCoded。我可以用AvPlayer播放mp4文件,但URL编码的文件不可播放。另一方面,URL编码的文件可以在android VideoView中播放。你知道这件事吗? 这里是我的代码,首先从多媒体资料中选

  • 问题内容: 之间有什么区别 request.ContentType =“ application / json; charset = utf-8”; 和 webRequest.ContentType =“ application / x-www-form-urlencoded”; 问题答案: 第一种情况是告诉Web服务器您正在发布JSON数据,如下所示: 第二个选项是告诉Web服务器您将对URL中

  • 当内容类型不是text/html、text/plain或text/xml,而是application/x-www-form-urlencoded内容类型时,我很难理解如何设置字符集。 给出以下(简化的)javascript代码: 如果我没有显式设置编码, Firebug告诉我内容类型是"Application/x-www-form-urlencoded; charset=UTF-8"。 例如,如果

  • 问题内容: 我曾经有ElasticSearch 5.2,并且刚升级到6.0。 我正在尝试按照此处的指南创建索引模板,但出现错误 我的查询是 问题答案: 要解决此问题,请添加curl选项 这个错误是由于 严格的内容类型检查 在ElasticSearch 6.0中引入,在解释这个岗位 从Elasticsearch 6.0开始,所有包含主体的REST请求也必须提供该主体的正确内容类型。

  • spring-cloud-starter-openfeign 2.1.1.发行版 我还尝试添加假表单依赖项和@param而不是@requestparam,但没有成功。

  • 我试图用C语言复制CURL中的以下代码。请注意,这段代码使用curl时工作正常。我在用这个https://curl.olsh.me/创建请求。 curl-k-u“默认用户:机器人”-H”内容类型:application/x-www-form-urlencoded;v=2.0“-d”value=TRUE“”https://localhost/rw/rapid/symbol/RAPID/T_ROB1/