相关疑难解决方法(0)

Apache HttpClient GET与body

我试图在其正文中发送一个带有json对象的HTTP GET.有没有办法设置HttpClient HttpGet 的主体?我正在寻找相当于HttpPost#setEntity.

java apache-httpclient-4.x

16
推荐指数
2
解决办法
2万
查看次数

Spring RestTemplate - 带请求正文的http GET

可能重复:
带请求正文的HTTP GET

我在这里看过几个不提倡通过HTTP GET发送内容的讨论.可以通过客户端(Web浏览器)发送的数据大小有限制.处理GET数据也取决于服务器.请参阅 以下资源部分.

但是,我被要求测试使用RestTemplate通过HTTP GET发送内容的可能性.我在春季论坛上几乎没有讨论,但没有回答.(请注意通过http Post发送数据工作正常).这里的讨论建议使用POST.

dev env - JBoss AS 5.1,Spring 3.1.3

客户

    @Test
public void testGetWithBody()
{
    // acceptable media type
    List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
    acceptableMediaTypes.add(MediaType.TEXT_PLAIN);

    // header
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(acceptableMediaTypes);

    // body
    String body = "hello world";
    HttpEntity<String> entity = new HttpEntity<String>(body, headers);

    Map<String, Object> uriVariables = new HashMap<String, Object>();
    uriVariables.put("id", "testFile");

    // Send the request as GET
    ResponseEntity<String> result = restTemplate.exchange(
            "http://localhost:8080/WebApp/test/{id}/body",
            HttpMethod.GET, entity, String.class, …
Run Code Online (Sandbox Code Playgroud)

get http

15
推荐指数
1
解决办法
5万
查看次数

使用Cloudfront以只读方式公开ElasticSearch REST API(GET/HEAD)

我想让我的客户直接与ElasticSearch REST API对话,显然阻止他们执行任何数据或配置更改.

我看了一下ElasticSearch REST接口,我注意到了这种模式:HTTP GET请求非常安全(无害查询和集群状态).

所以我认为我可以将Cloudfront用作仅允许GET/HEAD方法的CDN /代理(您可以将其限制在主配置中).

到目前为止一切都很好,一切都已成立.但事情不起作用,因为我需要向全世界开放我的EC2安全组才能从Cloudfront访问!我真不想要这个!

当我将EC2与RDS一起使用时,我可以简单地允许访问RDS安全组中的EC2安全组.为什么我不能使用CloudFront执行此操作?或者我可以吗?

想法?

编辑:它没有记录,但ES接受facets查询,它涉及(JSON)主体,不仅使用POST,还使用GET.这通过不忽略GET请求()的主体来简单地破坏HTTP建议(对于RFC3616 ).这是因为,正如所指出的那样,直接暴露ES REST接口可能导致使用复杂查询的轻松DOS攻击.我仍然相信,少一个代理仍然值得.

编辑:我另一个选项是跳过CloudFront的并增加了安全层作为ElasticSearch插件,如图点击这里

rest http amazon-web-services elasticsearch amazon-cloudfront

15
推荐指数
2
解决办法
4373
查看次数

Angular 2 - Http获取请求 - 传递json对象

如何进行http get请求并传递json对象

这是我的json-Object

{{firstname:"Peter", lastname:"Test"}
Run Code Online (Sandbox Code Playgroud)

这个对象我想传递http请求以获得匹配人员列表.

这怎么可能?此示例仅显示带有json结果的简单get请求.我该如何修改它?

//Component:

person:Person;
persons:Person [];
....
//Whre can I pass the person, here in the service??
getMatchedPersons(){
  this.httpService.getMatchedPersons().subscribe(
     data =>  this.persons = data,
    error => aller(error)
    );
 ); 
  

  //SERVICE
  //pass parameters?? how to send the person object here?
  getMatchedPersons(){
    return this.http.get('url').map(res => res.json());
  }
Run Code Online (Sandbox Code Playgroud)

javascript http angular

14
推荐指数
3
解决办法
2万
查看次数

GET HTTP请求有效负载

我正在设计一个API,我想知道在GET请求上发送JSON有效负载是否合适?

在这个其他问题的HTTP请求方法的有效载荷,我们可以根据这个链接找到:

  • HEAD - 没有定义的正文语义.
  • GET - 没有定义的正文语义.
  • PUT - 支持身体.
  • POST - 支持身体.
  • DELETE - 没有定义的正文语义.
  • TRACE - 不支持身体.
  • 选项 - 支持身体但没有语义(可能在将来).

这是否意味着我不应该发送带有效负载的GET请求? 这样做有风险吗?

  • 就像让一些HTTP客户端库无法发送这样的有效载荷?
  • 或者我的Java API代码无法在某些应用程序服务器上移植?
  • 还要别的吗?

我发现ElasticSearch在GET请求上使用了这样的有效负载:

$ curl -XGET 'http://localhost:9200/twitter/tweet/_search?routing=kimchy' -d '{
    "query": {
        "filtered" : {
            "query" : {
                "query_string" : {
                    "query" : "some query string here"
                }
            },
            "filter" : {
                "term" : { "user" : "kimchy" }
            }
        }
    }
}
'
Run Code Online (Sandbox Code Playgroud)

因此,如果这个受欢迎的图书馆没有人抱怨,那么也许我可以做同样的事情吗?

顺便说一句,我想知道混合queryString参数和JSON有效负载是否可行?就像这个ElasticSearch查询一样.如果是这样,是否有规则,以便我们知道哪些参数应该是queryString参数或有效负载参数?


在这里我们可以阅读: 带有请求体的HTTP …

java api get http elasticsearch

13
推荐指数
1
解决办法
2万
查看次数

Flutter:为 Http GET 请求发送 JSON 正文

我需要从我的 Flutter 应用程序向 API 发出 GET 请求,该请求需要请求正文为 JSON(原始)。

我在 Postman 中使用 JSON 请求正文测试了 API,它似乎工作正常。

在此处输入图片说明

现在在我的 Flutter 应用程序中,我正在尝试做同样的事情:

_fetchDoctorAvailability() async {
    var params = {
      "doctor_id": "DOC000506",
      "date_range": "25/03/2019-25/03/2019" ,
      "clinic_id":"LAD000404"
    };

    Uri uri = Uri.parse("http://theapiiamcalling:8000");
    uri.replace(queryParameters: params);

    var response = await http.get(uri, headers: {
      "Authorization": Constants.APPOINTMENT_TEST_AUTHORIZATION_KEY,
      HttpHeaders.contentTypeHeader: "application/json",
      "callMethod" : "DOCTOR_AVAILABILITY"
    });

    print('---- status code: ${response.statusCode}');
    var jsonData = json.decode(response.body);

    print('---- slot: ${jsonData}');
}
Run Code Online (Sandbox Code Playgroud)

但是 API 给了我一个错误说

{message: Missing input json., status: false}

如何在 Flutter 中为 Http GET 请求发送原始(或者更确切地说是 JSON)请求正文?

json dart flutter

13
推荐指数
3
解决办法
2万
查看次数

HTTP SEARCH 方法是否标准化?

我正在考虑如何实现用于搜索的 REST API 端点。在我看来,对于如何实现搜索选项,我有四种选择,每种都有优点和缺点:

  1. 使用带有查询字符串参数的 GET 端点
  2. 使用带有负载的 GET 端点(例如,JSON 负载)
  3. 使用带有负载的 POST 端点
  4. 使用带有负载的 SEARCH 端点

为了完整起见,以下是我想到的优点和缺点:

  • 带有查询字符串参数的 GET 端点
    • Pro - 动词准确,符合标准
    • 缺点 - 有限的选项结构(仅限键/值)和 URL 大小限制
  • 带有有效负载的 GET 端点(例如,JSON 有效负载)
    • Pro - 动词准确,无大小限制
    • 缺点 - HTTP 规范表示 GET 请求没有有意义的有效负载,并且某些框架可能不支持它(相关问题
  • 带有有效负载的 POST 端点
    • Pro - 符合标准,无尺寸限制
    • 缺点 - 搜索是幂等的,而 POST 则不是。基本上,这是一个错误的动词。
  • 带有有效负载的搜索端点
    • Pro - 动词准确,无大小限制
    • 缺点 - 是一个晦涩的(非标准的?)HTTP 动词

可以就其中哪一个最好进行冗长、细致和固执己见的讨论,但这种讨论不是这个问题的目的。相反,我会问:SEARCH 动词只是晦涩难懂且很少使用,但仍然是官方方法,还是非标准?

我找到了该方法的草案,但没有更多关于它的官方文档。该草案呼应了我上面提出的四难困境中的一些要点。在我看来,该方法仍然只是一个草案,不能称为“标准”,尽管我不太熟悉如何阅读这些文档。

从功能上来说,我想我的问题是:我可以依靠自称符合标准的软件来处理 SEARCH 方法吗?如果他们不处理,我可以诉诸他们声称符合标准来迫使他们处理吗?进一步归结起来,它是一个可靠的动词吗?

search specifications http

13
推荐指数
1
解决办法
6782
查看次数

ElasticSearch中的范围查询(没有正文的GET)

关于弹性搜索的非常基本的问题,文档没有非常清楚地回答(因为它们似乎涉及许多高级细节但却错过了基本细节!).

示例:范围查询

http://www.elasticsearch.org/guide/reference/query-dsl/range-query.html

不告诉如何通过搜索端点来执行范围?

如果是,那么如何通过查询字符串来做到这一点?我的意思是,我想做一个GET,而不是一个POST(因为它是一个查询,而不是一个插入/修改).但是,GET请求的文档并未告诉如何在Range示例中使用JSON:

http://www.elasticsearch.org/guide/reference/api/search/uri-request.html

我错过了什么?

谢谢

json elasticsearch

12
推荐指数
3
解决办法
2万
查看次数

测试以对象作为参数的GET请求(Asp.NET WebApi控制器)

我被指派为应用程序开发WebAPI控制器(我之前从未使用过的东西).一切都很顺利,有一些基本的请求,如GetAllUsers(int id)只是出于测试原因 - 配置本身很好.

现在这是问题所在.我有一种方法 GetAllItems(Carrier carrier),其中Carrier是一个具有许多不同参数的类.由于我们已经在数据库中有一些Carrier实例用于测试目的,我尝试过查询数据库,根据ID(GUID)属性选择Carrier实例,但没有结果.

有没有办法在输入参数是对象时测试GET请求,而不是手动测试单个值(例如int ID),测试方法或某种测试输入参数?

编辑:感谢大家的反馈,我的问题的解决方案实际上比我预期的更容易解决.我绝对乐意给予好评的是你,虽然很遗憾我的名声太低这样做(我是新来的StackOverflow),所以我必须要回到在不久的将来的某个时候这样做.干杯:)

c# asp.net asp.net-web-api

12
推荐指数
1
解决办法
1万
查看次数

如何在java restful服务中使用json参数

我如何在我的webservice中使用json参数,我可以使用@PathParam获取参数但是获取json数据作为参数不知道该怎么做.

@GET
@Path("/GetHrMsg/json_data")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces(MediaType.APPLICATION_JSON)
public String gethrmessage(@PathParam("emp_id") String empid) {
Run Code Online (Sandbox Code Playgroud)

}

用什么代替@PathParam以及以后如何解析它.

java json web-services

12
推荐指数
2
解决办法
6万
查看次数