黑客24小时在线接单网站

黑客在线接单,网站入侵,渗透测试,渗透网站,入侵网站

jersey参数xss过滤(java过滤xss参数)

本文目录一览:

jersey 中一个Resource 中的post *** 如何调用另一个Resource 中post ***

要开始使用 Jersey 客户端 API,首先需要创建一个 com.sun.jersey .api.client.Client 类的实例。下面是最简单的 *** :

import com.sun.jersey .api.client.Client;

Client client = Client.create();

Client 类是创建一个 RESTful Web Service 客户端的主要配置点。你可以使用它来配置不同的客户端属性和功能,并且指出使用哪个资源提供者。创建一个 Client 类的实例是一个比较昂贵的操作,所以尽量避免创建一些不需要的客户端实例。比较好的方式是尽可能地复用已经存在的实例。

当创建完一个 Client 类的实例后,可以开始使用它。无论如何,在发出请求前,需要创建一个 Web Resource 对象来封装客户端所需要的 Web 资源。

Web 资源创建了一个 WebResponse 对象:

import com.sun.jersey .api.client.WebResource;

Web Resource webResource = c.resource("");

通过使用 WebResource 对象来创建要发送到 Web 资源的请求,以及处理从 Web 资源返回的响应。例如,你可以使用 WebResource 对象来发送 HTTP GET、PUT、POST 以及 DELETE 请求。

GET 请求:使用 WebResource 类的 get() *** 来提交一个 HTTP GET请求到 Web 资源:

String s = webResource.get(String.class);

这表示如果 WebResource 对象的 URL 是 ,那么一个 HTTP GET 请求将会发送到地址为 的资源。

String s = webResource.get(String.class);

还可以指定 get() 请求时的查询参数。例如,下面的代码在 get() 请求中指定了两个查询参数:

MultivaluedMap queryParams = new MultivaluedMapImpl();

queryParams.add("param1", "val1");

queryParams.add("param2", "val2");

String s = webResouce.queryParams(queryParams).get(String.class);

还可以指定响应所能接受的 MIME 类型。例如,下面的代码指定了响应的 MIME 类型只能为文本:

String s = webResource.accept("text/plain").get(String.class);

还可以获取对应请求的 HTTP 状态码,例如下面这个例子展示获取一个请求所返回的文本实体与状态码:

ClientResponse response = webResource.accept("text/plain")

.get(ClientResponse.class);

int status = response.getStatus();

String textEntity = response.getEntity(String.class);

ClientResponse 对象代表了一个客户端收到的 HTTP 响应。

PUT 请求 :使用 WebResource 类的 put() *** 来提交一个 HTTP PUT 请求到 Web 资源。例如下面的代码展示了请求发送一个文本实体 foo:bar 到指定的 Web 资源:

ClientResponse response = webResource.type("text/plain")

.put(ClientResponse.class, "foo:bar");

同样,也可以在使用 put() *** 发送请求时指定查询参数, *** 与使用 get() *** 时指定查询参数一样。在下面的例子中,把在之前 get() *** 示例中使用过的两个同样的查询参数指定到了一个 put() 请求中:

MultivaluedMap queryParams = new MultivaluedMapImpl();

queryParams.add("param1", "val1");

queryParams.add("param2", "val2");

ClientResponse response = webResource.queryParams(queryParams)

.put(ClientResponse.class, "foo:bar");

POST 请求 :一个 POST 请求相当于一个 GET 请求和一个 PUT 请求的综合,也就意味着,可以使用 POST 请求来发送一个实体到指定的 Web 资源并且接收另一个实体。使用 WebResource 类的 post() *** 来发送一个 HTTP POST 请求到指定的 Web 资源。下面的例子展示了发送一个带有查询参数以及进行了 URL 编码的表单数据的 POST 请求:

MultivaluedMap formData = new MultivaluedMapImpl();

formData.add("name1", "val1");

formData.add("name2", "val2");

ClientResponse response = webResource.type("application/x-www-form-urlencoded")

.post(ClientResponse.class, formData);

DELETE 请求:使用 Web Resource 类的 delete() *** 来发送珍上 HTTP DELETE 请求到指定的 Web 资源。例如,下面的例子展示删除一个 URI 为 资源:

ClientResponse response = webResource.path("user/123")

.delete(ClientResponse.class);

另外,Web Resource.path() *** 可以在所有 HTTP 请求中使用,它可以让你给要请求的 Web 资源指定一个额外的路径。另一个 WebResouce 类的 *** header() 可以给你的请求添加 HTTP 头部信息。

另外如果表单提交的话,需要new Form来作为参数提交。

一个基于 Jersey 客户端的示例

package com.trend.vmware.client;

import javax.ws.rs.core.MediaType;

import com.sun.jersey.api.client.Client;

import com.sun.jersey.api.client.ClientResponse;

import com.sun.jersey.api.client.WebResource;

import com.sun.jersey.api.representation.Form;

import com.trend.vmware.model.TaskResponse;

public class VMOVFRestClient {

public static void main(String[] args) {

String restURI = "";

Client c = Client.create();

WebResource webResource = c.resource(restURI+"/rest/vsphere/template");

exportOVF(webResource,"AutoLab/Test_VM3/action/exportOVF");

// importOVF(webResource,"10.64.3.188/action/importOVF");

}

public static void exportOVF(WebResource r, String pathParam){

postForm(r.path(pathParam),"datastore1","D:/ovf");

System.out.println(" -------------------------"+r.path(pathParam));

}

public static void importOVF(WebResource r, String pathParam){

postFormForImportOVF(r.path(pathParam),"E:/ovf","datastore1","TEST_VM");

System.out.println(" -------------------------"+r.path(pathParam));

}

//TO POST FORM

public static void postForm(WebResource r, String dataStoreName,String localPath) {

Form form = new Form();

form.add("dataStoreName", dataStoreName);

form.add("localPath",localPath);

ClientResponse response = r.type(MediaType.APPLICATION_FORM_URLENCODED)

.post(ClientResponse.class, form);

//TODO handler response.getEntity

System.out.println(response.getEntity(String.class));

}

//TO POST FORM FOR importOVF

public static void postFormForImportOVF(WebResource r, String localPath,String dataStoreName,String newVMName) {

Form form = new Form();

form.add("localPath",localPath);

form.add("dataStoreName", dataStoreName);

form.add("newVMName", newVMName);

ClientResponse response = r.type(MediaType.APPLICATION_FORM_URLENCODED)

.post(ClientResponse.class, form);

//TODO handler response.getEntity

TaskResponse res = response.getEntity(TaskResponse.class);

System.out.println("res ---"+res.getMessage()+"- "+res.getTaskStatus());

}

}

jersey获取json参数,该如何处理

json字符串先转化为json对象

*** ONObject dataJson=new *** ONObject("你的Json字符串“);

然后解析json对象就好

dataJson.get *** ONObject(" *** ON中的数据");

如何在java REST API中用GZip和Jersey压缩相应

有许多情景当你的REST api提供的相应是非常长的,并且我们都知道传递速度和贷款在移动设备/ *** 上是多重要。当开发支持REST apis的移动app的时候,我认为首要的性能更优化的点就是需要解决。猜猜是什么?因为响应式文本,因此我们能压缩这些文本。而且随着当前的只能手机和平板的能力,在客户端解压文本应该不是个大问题...因此在这篇文章中,如果你使用java的Jersey构建它,我将介绍你怎么能有选择性的压缩REST API响应,这个Jersey事JAX-RS的映射实现(还有更多)...

1.Jersey过滤器和拦截器

啊,感谢Jersey的强大的过滤器和拦截器特性,这个实现是相当容易的。然后过滤器是主要打算来维护像HTTP headers,URIs和/或HTTP methods的request和response的参数,拦截器是维护实体,通过维护实体的输入/输出流。

但是对于压缩将使用一个GZip WriterInterceptor,一个写拦截器被用于这种情况,在那个类里,实体被写到"wire",当在这种情况中时,它在服务器这边,这就意味着输出一个响应实体。

1.1GZip Writer Interceptor

那让我们来看看我们的GZip Writer Interceptor吧:

GZip Writer Interceptor

package org.codingpedia.demo.rest.interceptors;

import java.io.IOException;

import java.io.OutputStream;

import java.util.zip.GZIPOutputStream;

import javax.ws.rs.WebApplicationException;

import javax.ws.rs.core.MultivaluedMap;

import javax.ws.rs.ext.WriterInterceptor;

import javax.ws.rs.ext.WriterInterceptorContext;

@Provider

@Compress

public class GZIPWriterInterceptor implements WriterInterceptor {

@Override

public void aroundWriteTo(WriterInterceptorContext context)

throws IOException, WebApplicationException {

MultivaluedMapString,Object headers = context.getHeaders();

headers.add("Content-Encoding", "gzip");

final OutputStream outputStream = context.getOutputStream();

context.setOutputStream(new GZIPOutputStream(outputStream));

context.proceed();

}

}

注意:

它实现了WriterInterceptor,这是一个写拦截器的消息体的接口,这个接口包装调用javax.ws.rs.ext.MessageBodyWriter.writeTo

供应商实现WriterInterceptor协议必须要么以编程方式注册进一个JAX-RS运行环境,要么必须用@Provider注解来注解在一个提供商扫描语句期间自动的被JAX-RS运行环境发现。

@Compress是绑定注解的名称,在接下来的段落中我们将更详细的讨论它

“拦截器从WriterInterceptorContext中获得一个输出流并且设置一个新的用原始的GZIP包装器包装的输出流。在所有的拦截器被执行以后,输出流最终设置WriterInterceptorContext将用于序列化实体。在上面的例子中,实体字节将被写到GZIPOutputStream中,这个类将压缩流数据,然后把他们写到原始输出流。原始流总是把数据写到wire中。当拦截器被用在服务器上时,原始输出流会把数据写到底层服务器容器的流中,然后发送响应给客户端。”

“重载 *** aroundWriteTo()获取WriterInterceptorContextz作为参数。这个上下文包括请求头参数getters和setters,请求属性,实体,实体流和其它属性;当你压缩你的响应时,你应当设置'Content-Encoding'头位gzip”

1.2 压缩注解

过滤器和拦截器能被绑定名字。名称绑定是一种概念,这种概念就是允许告诉一个JAX-RS的运行时,一个只为特定资源 *** 的特定的过滤器或者拦截器将被执行。当一个过滤器或者拦截器只对一些特定的资源 *** 限制,那我们就认为它是名称绑定。过滤器和拦截器没有这样的限制就被称作global。在我们的例子中我们已经构建了@Compress注解:

Compress annotation

package org.codingpedia.demo.rest.interceptors;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import javax.ws.rs.NameBinding;

//@Compress annotation is the name binding annotation

@NameBinding

@Retention(RetentionPolicy.RUNTIME)

public @interface Compress {}

而且用它来标记在资源上的 *** ,这个 *** 应该是被压缩的(eg:当GET-ing的时候,所有的博客用PodcastsResource)

@Consumes @Produces分别表示入参和出参数吗

@Consumes 注释表示的接受指定的MIME格式,只有符合这个参数设置的请求再能访问到这个资源。比如@Consumes("application/x-www-form-urlencoded")。

@Produces 注释表示的指定返回MIME格式,资源按照那种数据格式返回,可取的值有:MediaType.APPLICATION_XXX。比如:@Produces(MediaType.APPLICATION_XML)。

这两个都是jersey常用的注解解释。

扩展资料:

jersey常用的其他注解解释:

@GET表示查询请求,相当于数据库的查询数据操作;

@PUT表示插入请求,相当于数据库的插入数据操作;

@POST表示更新请求,相当于数据库的更新数据操作 ;

@DELETE 表示删除请求,相当于数据的删除数据操作 ;

@PathParam表示uri路径参数,写在 *** 的参数中,获得请求路径参数。比如:@PathParam("username") String userName;

@QueryParam表示uri路径请求参数,写在 *** 的参数中,获得请求路径附带的参数。比如:@QueryParam("desc") String desc。

参考资料:百度百科-Jersey

如何使用oauth2实现jersey 接口安全认证

连续二天的Peyote实验后(你可能会找到更好的放松办法),结论终于呈现在你眼前:Amazon是拥有更大的、使用最多的在线中国络API的中国络服务之一,并且根本不支持OAuth! 经过一个下午长时间的狂想之后,你最终败下阵来,并看到Amazon是如何保持API请求安全的。你不清楚为什么,但读完整页关于如何为Amazon中国络服务装配一个请求后,你依然觉得不完全合理。这个“签名”和什么连在一起?代码示例中的“data”参数是什么?这样,你会继续查找关于“安全API设计”的文章…… 当遇到其他人问同样的问题时,你看到一些指出“HMAC”或其他事物的优秀回复,但还是不太确定。 你找到其他鼓励你使用“HMAC”的文章并且你正H-FINE地使用它,如果有人将“HMAC”解释成简明的H_ENGLISH的话。 你的确偶遇了一个有道理的蒸馏的基本概念,它是这样一简明的英语描述的: 一个服务器和客户端知道一个公钥和一个私钥;只有服务器和客户端知道私钥,但每个人都知道公钥……但不关心别人所知道的。 一个客户端生成一个唯一的HMAC(哈希)表示它到服务器的请求。通过把请求数据(参数和值或XML/ *** ON或任何它计划发送的数据)以及请求数据的散列blob和私钥结合来实现。 客户端随后将这个HASH以及所有它将要发送的参数和值一并发给服务器。 服务器接到请求,并使用与客户端相同的方式重新生成自己独有的基于提交值的HMAC(哈希)。 然后,服务器比较这两个HMAC,如果相同,服务器就信任这个客户端并执行请求。 这似乎很直截了当。最初让你困惑的是,你以为原始请求是经过加密传送的,但实际上,HMAC *** 所做的一切只是使用只有客户端和服务器才知道的私钥将参数生成为一些独特的校验和(哈希)。 随后,客户端将这个校验和及原始参数和值发给服务器,然后服务器复核校验和(哈希)以确定它接受客户端所发的请求。 因为根据假设,只有在客户端和服务器知道私钥,我们假设如果他们的哈希匹配,那么它们会互相信任,以至服务器随即正常处理这个请求。 你知道在现实中,这就相当于某人过来对你说:“Jimmy让我告诉你把钱给Johnny”,但你不知道这个人是谁,所以你要伸出手去试探他,看看他是否知道这个秘密握手

怎么通过jersey-client客户端调用jersey的web服务

REST (REpresentation State Transfer) 描述了一个架构样式的 *** 系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个惟一的地址。所有资源都共享统一的界面,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP *** ,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。另一个重要的 REST 原则是分层系统,这表示组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。当REST 架构的约束条件作为一个整体应用时,将生成一个可以扩展到大量客户端的应用程序。它还降低了客户端和服务器之间的交互延迟。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST 简化了客户端和服务器的实现。RESTful的实现:RESTful Web 服务与 RPC 样式的 Web 服务了解了什么是什么是REST,我们再看看RESTful的实现。最近,使用 RPC 样式架构构建的基于 SOAP 的 Web 服务成为实现 SOA 最常用的 *** 。RPC 样式的 Web 服务客户端将一个装满数据的信封(包括 *** 和参数信息)通过 HTTP 发送到服务器。服务器打开信封并使用传入参数执行指定的 *** 。 *** 的结果打包到一个信封并作为响应发回客户端。客户端收到响应并打开信封。每个对象都有自己独特的 *** 以及仅公开一个 URI 的 RPC 样式 Web 服务,URI 表示单个端点。它忽略 HTTP 的大部分特性且仅支持 POST *** 。由于轻量级以及通过 HTTP 直接传输数据的特性,Web 服务的 RESTful *** 已经成为最常见的替代 *** 。可以使用各种语言(比如 Java 程序、Perl、Ruby、Python、PHP 和 Javascript[包括 Ajax])实现客户端。RESTful Web 服务通常可以通过自动客户端或代表用户的应用程序访问。但是,这种服务的简便性让用户能够与之直接交互,使用它们的 Web 浏览器构建一个 GET URL 并读取返回的内容。在REST 样式的 Web 服务中,每个资源都有一个地址。资源本身都是 *** 调用的目标, *** 列表对所有资源都是一样的。这些 *** 都是标准 *** ,包括 HTTP GET、POST、PUT、DELETE,还可能包括 HEADER 和 OPTIONS。在RPC 样式的架构中,关注点在于 *** ,而在 REST 样式的架构中,关注点在于资源 -- 将使用标准 *** 检索并操作信息片段(使用表示的形式)。资源表示形式在表示形式中使用超链接互联。Leonard Richardson 和 Sam Ruby 在他们的著作 RESTful Web Services 中引入了术语 REST-RPC 混合架构。REST-RPC 混合 Web 服务不使用信封包装 *** 、参数和数据,而是直接通过 HTTP 传输数据,这与 REST 样式的 Web 服务是类似的。但是它不使用标准的 HTTP *** 操作资源。它在 HTTP 请求的 URI 部分存储 *** 信息。好几个知名的 Web 服务,比如 Yahoo 的 Flickr API 和 del.icio.us API 都使用这种混合架构。RESTful的实现:RESTful Web 服务的 Java 框架有两个 Java 框架可以帮助构建 RESTful Web 服务。erome Louvel 和 Dave Pawson 开发的 Restlet(见 参考资料)是轻量级的。它实现针对各种 RESTful 系统的资源、表示、连接器和媒体类型之类的概念,包括 Web 服务。在 Restlet 框架中,客户端和服务器都是组件。组件通过连接器互相通信。该框架最重要的类是抽象类 Uniform 及其具体的子类 Restlet,该类的子类是专用类,比如 Application、Filter、Finder、Router 和 Route。这些子类能够一起处理验证、过滤、安全、数据转换以及将传入请求路由到相应资源等操作。Resource 类生成客户端的表示形式。 *** R-311是 Sun Microsystems 的规范,可以为开发 RESTful Web 服务定义一组 Java API。Jersey是对 *** R-311 的参考实现。 *** R-311 提供一组注释,相关类和接口都可以用来将 Java 对象作为 Web 资源展示。该规范假定 HTTP 是底层 *** 协议。它使用注释提供 URI 和相应资源类之间的清晰映射,以及 HTTP *** 与 Java 对象 *** 之间的映射。API 支持广泛的 HTTP 实体内容类型,包括 HTML、XML、 *** ON、GIF、JPG 等。它还将提供所需的插件功能,以允许使用标准 *** 通过应用程序添加其他类型。RESTful的实现:构建 RESTful Web 服务的多层架构RESTful Web 服务和动态 Web 应用程序在许多方面都是类似的。有时它们提供相同或非常类似的数据和函数,尽管客户端的种类不同。例如,在线电子商务分类网站为用户提供一个浏览器界面,用于搜索、查看和订购产品。如果还提供 Web 服务供公司、零售商甚至个人能够自动订购产品,它将非常有用。与大部分动态 Web 应用程序一样,Web 服务可以从多层架构的关注点分离中受益。业务逻辑和数据可以由自动客户端和 GUI 客户端共享。惟一的不同点在于客户端的本质和中间层的表示层。此外,从数据访问中分离业务逻辑可实现数据库独立性,并为各种类型的数据存储提供插件能力。图1 展示了自动化客户端,包括 Java 和各种语言编写的脚本,这些语言包括 Python、Perl、Ruby、PHP 或命令行工具,比如 curl。在浏览器中运行且作为 RESTful Web 服务消费者运行的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都属于此列,因为它们都代表用户以自动化样式运行。自动化 Web 服务客户端在 Web 层向 Resource Request Handler 发送 HTTP 响应。客户端的无状态请求在头部包含 *** 信息,即 POST、GET、PUT 和 DELETE,这又将映射到 Resource Request Handler 中资源的相应操作。每个请求都包含所有必需的信息,包括 Resource Request Handler 用来处理请求的凭据。从Web 服务客户端收到请求之后,Resource Request Handler 从业务逻辑层请求服务。Resource Request Handler 确定所有概念性的实体,系统将这些实体作为资源公开,并为每个资源分配一个惟一的 URI。但是,概念性的实体在该层是不存在的。它们存在于业务逻辑层。可以使用 Jersey 或其他框架(比如 Restlet)实现 Resource Request Handler,它应该是轻量级的,将大量职责工作委托给业务层。Ajax 和 RESTful Web 服务本质上是互为补充的。它们都可以利用大量 Web 技术和标准,比如 HTML、JavaScript、浏览器对象、XML/ *** ON 和 HTTP。当然也不需要购买、安装或配置任何主要组件来支持 Ajax 前端和 RESTful Web 服务之间的交互。RESTful Web 服务为 Ajax 提供了非常简单的 API 来处理服务器上资源之间的交互。图1 中的 Web 浏览器客户端作为 GUI 的前端,使用表示层中的 Browser Request Handler 生成的 HTML 提供显示功能。Browser Requester Handler 可以使用 MVC 模型( *** F、Struts 或 Spring 都是 Java 的例子)。它从浏览器接受请求,从业务逻辑层请求服务,生成表示并对浏览器做出响应。表示供用户在浏览器中显示使用。表示不仅包含内容,还包含显示的属性,比如 HTML 和 CSS。 业务规则可以集中到业务逻辑层,该层充当表示层和数据访问层之间的数据交换的中间层。数据以域对象或值对象的形式提供给表示层。从业务逻辑层中解耦 Browser Request Handler 和 Resource Request Handler 有助于促进代码重用,并能实现灵活和可扩展的架构。此外,由于将来可以使用新的 REST 和 MVC 框架,实现它们变得更加容易,无需重写业务逻辑层。数据访问层提供与数据存储层的交互,可以使用 DAO 设计模式或者对象-关系映射解决方案(如 Hibernate、OJB 或 iBATIS)实现。作为替代方案,业务层和数据访问层中的组件可以实现为 EJB 组件,并取得 EJB 容器的支持,该容器可以为组件生命周期提供便利,管理持久性、事务和资源配置。但是,这需要一个遵从 Java EE 的应用服务器(比如 JBoss),并且可能无法处理 Tomcat。该层的作用在于针对不同的数据存储技术,从业务逻辑中分离数据访问代码。数据访问层还可以作为连接其他系统的集成点,可以成为其他 Web 服务的客户端。数据存储层包括数据库系统、LDAP 服务器、文件系统和企业信息系统(包括遗留系统、事务处理系统和企业资源规划系统)。使用该架构,您可以开始看到 RESTful Web 服务的力量,它可以灵活地成为任何企业数据存储的统一 API,从而向以用户为中心的 Web 应用程序公开垂直数据,并自动化批量报告脚本。什么是REST:结束语REST 描述了一个架构样式的互联系统(如 Web 应用程序)。REST 约束条件作为一个整体应用时,将生成一个简单、可扩展、有效、安全、可靠的架构。由于它简便、轻量级以及通过 HTTP 直接传输数据的特性,RESTful Web 服务成为基于 SOAP 服务的一个最有前途的替代方案。用于 web 服务和动态 Web 应用程序的多层架构可以实现可重用性、简单性、可扩展性和组件可响应性的清晰分离。Ajax 和 RESTful Web 服务本质上是互为补充的。

  • 评论列表:
  •  夙世征棹
     发布于 2022-06-24 14:45:48  回复该评论
  • 操作信息片段(使用表示的形式)。资源表示形式在表示形式中使用超链接互联。Leonard Richardson 和 Sam Ruby 在他们的著作 RESTful Web Services 中引入了术语 REST-RPC 混合架构。REST-RPC 混合
  •  森槿戈亓
     发布于 2022-06-25 02:17:18  回复该评论
  • InterceptorContext context)throws IOException, WebApplicationException {MultivaluedMapString,Object headers = context.getHeaders();h
  •  世味卮酒
     发布于 2022-06-24 20:36:09  回复该评论
  • ass, "foo:bar"); 同样,也可以在使用 put() 方法发送请求时指定查询参数,方法与使用 get() 方法时指定查询参数一样。在下面的例子中,把在之前 get() 方法示例中使用过的两个同样的查询参数指定到了一个 pu

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.