标签: http-delete

如何使用HTTPoison在Elixir中执行DELETE?

我想使用HTTPoison Library在Elixir中执行以下命令.

$ curl -X DELETE -H "expired: 1442395800" -H "signature: ******************" -d '{"api_key":"***************","delete_path":"*******","expired":"****"}' https://cdn.idcfcloud.com/api/v0/caches
{"status":"success","messages":"We accept the cache deleted successfully."}
Run Code Online (Sandbox Code Playgroud)

当我检查的文件如何DELETEHTTPoison

def delete!(url, headers \\ [], options \\ []),   do: request!(:delete, url, "", headers, options)
Run Code Online (Sandbox Code Playgroud)

只有urlheader需要.那么我应该把请求体(json体)放在curl哪里?

在Elixir,我试过了

req_body = "{\"api_key\":\"#{api_key}\",\"delete_path\":\"#{delete_path}\",\"expired\":\"#{expired}\"}"

url = "https://cdn.idcfcloud.com/api/v0/caches"                                                                                           

response = HTTPoison.delete!(url, header, [req_body])
Run Code Online (Sandbox Code Playgroud)

但似乎行不通.有人能说出正确的方法吗?

curl elixir http-delete

9
推荐指数
1
解决办法
721
查看次数

HTTP DELETE请求

我正在尝试从我的代码后面的C#中执行HTTP DELETE,但我无法执行此操作.在查看该WebRequestMethods.Http类型的成员后,我甚至不确定这是否可行.

这是我的代码:

try
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/NameFiles/00000.txt");
    request.Method = "DELETE";
    request.ContentType = "application/x-www-form-urlencoded";
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    if (response.StatusCode == HttpStatusCode.OK)
    {
        // some code
    }
}
catch (Exception ex)
{
    ex.ToString();
}
Run Code Online (Sandbox Code Playgroud)

从我的开发环境运行这个我得到:"远程服务器返回错误:(401)未经授权."

我在服务器上收到了不同的结果,我认为它与IIS中的设置有关:"远程服务器返回错误:(501)未实现."

另外,正如我在下面的答案的评论中提到的,我能够使用同一服务器上的vbscript从经典的asp页面发送DELETE请求到与使用c#的aspx页面请求相同的位置.为什么这些会有所不同?

c# http http-delete

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

IIS中托管的WCF REST服务不支持PUT和DELETE

我使用Microsoft的WCF REST服务模板40在.NET 4中创建了一个WCF REST(aka WebHttp)服务.我在IIS 6中托管该服务.

服务模板使用Global.asax中的RouteTable作为创建"干净"URL的方法,其中不包含".svc".例如:

http:// localhost/flights/878

GET和POST对此URL工作正常,但PUT和DELETE导致HTTP 501,"未实现".

如果我创建一个简单的.svc文件,如下所示:

<%@ ServiceHost Language="C#" Debug="true" Service="MyProject.FlightsService"%>
Run Code Online (Sandbox Code Playgroud)

那么我可以对这个URL使用PUT和DELETE:

http:// localhost/flightsservice.svc/878

有谁知道是否有可能让PUT和DELETE对抗上面的"干净"URL?似乎没有办法配置IIS来允许这个,因为没有文件扩展名来配置设置,我不想全局允许PUT和DELETE.

rest wcf put http-delete

8
推荐指数
1
解决办法
5716
查看次数

REST - 可恢复的DELETE

我有一个关于HTTP DELETE和REST的问题.我有资源x.根据x的状态,删除x可以:

  1. 永久删除x.
  2. x标记为已删除.这意味着x可以在以后恢复.

我假设HTTP DELETE 必须根据HTTP/REST细节删除资源,而不是将其标记为已删除,例如:在处理HTTP DELETE之后,x上的 GET 必须返回404.这意味着HTTP DELETE不能用于第二种情况.您将如何以RESTful方式模拟此删除行为(包括1和2)?

然后,由于可以恢复某些资源,因此也应该通过REST API实现这一点.您将如何以RESTful方式建模还原行为?

为简单起见,假设x位于http:// company/api/x /上.

rest revert http-delete

8
推荐指数
2
解决办法
2000
查看次数

在Html.BeginForm()中使用DELETE表单方法?

我想尽可能使用适当的HTTP方法.在这种情况下,当单击按钮删除某些内容时,我想使用该属性触发控制器操作[HttpDelete].但是,我似乎无法使用此方法创建表单 - 使用Razor语法.该FormMethod枚举没有一个选项Delete并执行以下操作不会覆盖它:

@using (Html.BeginForm("Order", "Users", FormMethod.Post, new { method = "DELETE" }))
Run Code Online (Sandbox Code Playgroud)

搜索解决方案没有产生,没有人这样做吗?我知道我可以使用POST,但这不是HTTP删除方法的重点吗?

http-method razor asp.net-mvc-3 http-delete

8
推荐指数
1
解决办法
5041
查看次数

我什么时候应该在asp.net mvc应用程序中使用HttpDelete或HttpPut

即使我的操作在数据库上执行delete方法,我总是使用HttpGet或HttpPost.

我应该使用什么HttpDelete/HttpPut?

asp.net-mvc http-put http-delete

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

Spring MVC在Tomcat 6.0.35上使用@RequestParam和RequestMethod.DELETE

我有一个简单的方法(在Tomcat 6.0.35上运行),如下所示:

@RequestMapping(value = "/bla/d", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void d(@RequestParam String d){
    //logic here
}
Run Code Online (Sandbox Code Playgroud)

当我发送一个DELETE请求,其中包含类似参数的帖子(d = gggg在正文中),我得到400 Bad Request.但如果我把它改成

@RequestMapping(value = "/bla/d", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
public void d(@RequestParam String d){
    //logic here
}
Run Code Online (Sandbox Code Playgroud)

它完美地运作.我正在使用Firefox附加组件来测试它(以及python和Spring的RestTemplate,结果相同)这里的请求是如何看待POST的(a是一个带有参数a的cope粘贴方法):

POST /bla/a HTTP/1.1
Host: ~~~~:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 7
Pragma: no-cache
Cache-Control: no-cache
a=asdas

HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Tue, 12 Jun 2012 …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc http-delete

8
推荐指数
1
解决办法
6481
查看次数

HttpMethod.Delete不使用Spring-Android的RestTemplate

我正在尝试使用HttpMethod的DELETE方法.我正在使用的代码是

response = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Response.class);
Run Code Online (Sandbox Code Playgroud)

我也使用JacksonJson来映射json.删除功能返回应映射到Response类的json.但调用上面的行不起作用,并给出内部服务器错误500作为响应代码.但是,相同的API确实可以在浏览器中使用RESTClient,所以我猜有些东西我做得不对.

android json rest-client jackson http-delete

8
推荐指数
1
解决办法
8182
查看次数

LinkedIn Oauth - 撤销C#的访问权限

我的用户已经对我的LinkedIn应用程序进行了身份验证,但我也想让他们在任何给定时间从我的应用程序中取消身份验证.

我想我只是错过了http删除网址,但我不确定.

谢谢

c# linkedin http-delete

7
推荐指数
1
解决办法
401
查看次数

Spring @CrossOrigin 不适用于 DELETE 方法

Spring @CrossOrigin 注释不适用于 DELETE 方法。

示例代码(在 Groovy 中):

@CrossOrigin
@RestController
@RequestMapping('/rest')
class SpringController {

    @RequestMapping(value = '/{fileName}', RequestMethod.DELETE)
    void deleteFile(@PathVariable fileName) {
        // logic
    }

}
Run Code Online (Sandbox Code Playgroud)

对于这段代码,我得到了异常:

XMLHttpRequest 无法加载http://localhost:8080/rest/filename.txt。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问Origin ' http://localhost:4200 '。响应具有 HTTP 状态代码 404。

笔记:

  • 我在 Chrome 58 和 Postman 4.10.7 中测试过
  • 根据https://spring.io/guides/gs/rest-service-cors/默认情况下,@CrossOrigin 只允许 GET、HEAD 和 POST 跨域请求。虽然指定@CrossOrigin(methods = [RequestMethod.GET, RequestMethod.DELETE])没有帮助
  • 为简洁起见,我省略了一些代码。实际控制器也有相同映射的 GET 请求,delete 方法有返回类型并产生 JSON 响应,以及我认为不会影响问题的其他小东西。

spring spring-mvc cors http-delete

7
推荐指数
1
解决办法
2734
查看次数