Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 使用rest可以使用curl,但在使用RestTemplate时不起作用_Spring_Rest - Fatal编程技术网

Spring 使用rest可以使用curl,但在使用RestTemplate时不起作用

Spring 使用rest可以使用curl,但在使用RestTemplate时不起作用,spring,rest,Spring,Rest,我对restemplate有问题,我想使用 当我使用Curl时,它会起作用: curl-i-H“Accept:application/json“-H”内容类型:application/json“-X GET 但是当我试图使用restemplate时,它不起作用 RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setAccept(

我对
restemplate
有问题,我想使用

当我使用Curl时,它会起作用:

curl-i-H“Accept:application/json“-H”内容类型:application/json“-X GET

但是当我试图使用
restemplate
时,它不起作用

    RestTemplate restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
    headers.setContentType(MediaType.APPLICATION_JSON);
    HttpEntity<?> entity = new HttpEntity<>(headers);


    HttpEntity<String> response = restTemplate.exchange("http://swapi.co/api/", HttpMethod.GET, entity, String.class);

    Root root = new Gson().fromJson(response.getBody(), Root.class);
    System.out.println(root);
RestTemplate RestTemplate=new RestTemplate();
HttpHeaders=新的HttpHeaders();
setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity=新的HttpEntity(标题);
HttpEntity响应=restTemplate.exchange(“http://swapi.co/api/,HttpMethod.GET,entity,String.class);
Root=new Gson().fromJson(response.getBody(),Root.class);
System.out.println(根);
正如您所看到的,我在curl命令中设置了Accept和ContentType。我做错了什么,我一直在接受403禁止状态?
我正在使用带spring security的spring引导,但我禁用了csrf模式。

只需使用
restTemplate.getForObject(“http://swapi.co/api/“,String.class)(返回一个字符串)。
它更为直截了当和不言自明


您得到的403必须与标题相关,很可能是写着
headers.setAccept(Collections.singletonList(MediaType.APPLICATION\u JSON))
只需使用
restemplate.getForObject(“http://swapi.co/api/“,String.class)(返回一个字符串)。
它更为直截了当和不言自明


您得到的403必须与您的头相关,很可能是写着
headers.setAccept(Collections.singletonList(MediaType.APPLICATION\u JSON))

的行。检查响应表明请求通过Cloudflare,并且响应包含以下错误:

本网站的所有者(swapi.co)已根据您的浏览器签名(3a4c8846af5169b2-ua21)禁止您访问

因此,您可以作弊并添加接受的用户代理头。例如:

headers.add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0");

您应该联系swapi的所有者/维护者/开发人员,在文档中添加一个关于该限制的部分,因为它远不是显而易见的,应该明确记录下来。

检查响应表明请求通过Cloudflare,并且响应包含以下错误:

本网站的所有者(swapi.co)已根据您的浏览器签名(3a4c8846af5169b2-ua21)禁止您访问

因此,您可以作弊并添加接受的用户代理头。例如:

headers.add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:55.0) Gecko/20100101 Firefox/55.0");
您应该联系swapi的所有者/维护者/开发人员,在文档中添加一个关于该限制的部分,因为这远不是显而易见的,应该明确地记录下来。

检查它所说的url,但上面的代码指向HTTP

HttpEntity<String> response = restTemplate.exchange("https://swapi.co/api/", HttpMethod.GET, entity, String.class);
HttpEntity response=restTemplate.exchange(“https://swapi.co/api/,HttpMethod.GET,entity,String.class);
检查上面显示的url,但上面的代码指向HTTP

HttpEntity<String> response = restTemplate.exchange("https://swapi.co/api/", HttpMethod.GET, entity, String.class);
HttpEntity response=restTemplate.exchange(“https://swapi.co/api/,HttpMethod.GET,entity,String.class);

我使用的是getForObject方法,但还是出现了相同的错误。这台电视机可能有什么问题。接受吗?它应该接受JSON。我使用的是getForObject方法,但仍然得到了相同的错误。这台电视机可能有什么问题。接受吗?它应该接受Jsons。您的url显示http,但您共享的是https??我有什么遗漏吗?你的url上写着http,但你共享的是https??我还缺什么吗?