我正在尝试使用cURL创build一个HTTP PUT请求,我无法使其工作。 我已经阅读了许多教程,但没有一个真正起作用。 这是我现在的代码: $filedata = array('metadata' => $rdfxml); $ch = curl_init($url); $header = "Content-Type: multipart/form-data; boundary='123456f'"; curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array($header)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($filedata)); $returned = curl_exec($ch); if (curl_error($ch)) { print curl_error($ch); } else { print 'ret: ' .$returned; } 我也尝试使用PHP梨,但得到了相同的结果。 问题是存储库说没有设置元数据。 我真的需要帮助! 谢谢!
我一直在为它构build一个Rest API,我一直在testing它,通过在命令行中使用curl来进行testing,这对于CRUD 我可以成功地从命令行进行这些调用 curl -u username:pass -X GET http://api.mysite.com/pet/1 curl -d '{"dog":"tall"}' -u username:pass -X GET http://api.mysite.com/pet curl -d '{"dog":"short"}' -u username:pass -X POST http://api.mysite.com/pet curl -d '{"dog":"tall"}' -u username:pass -X PUT http://api.mysite.com/pet/1 上面的调用很容易使命令行,并与我的api工作正常,但现在我想用PHP来创buildcurl。 正如你所看到的,我将数据作为jsonstring传递。 我已经阅读了周围,我想我可以做POST和包含POST字段,但我一直无法find如何传递HTTP正文数据与GET。 我看到的所有东西都说你必须把它连接到url,但是在命令行窗体上看起来并不是这样。 无论如何,如果有人能够在一个页面上写出正确的方式在PHP中执行这四个操作,我会喜欢它。 我想看看用curl和php来做到最简单的方法。 我想我需要通过http身体的一切,因为我的php api捕捉所有与php:/ /input
我试图用Alamofire快速地提出一个请求。 我的JSON身体看起来像: { "IdQuiz" : 102, "IdUser" : "iosclient", "User" : "iosclient", "List":[ { "IdQuestion" : 5, "IdProposition": 2, "Time" : 32 }, { "IdQuestion" : 4, "IdProposition": 3, "Time" : 9 } ] } 我试图let list与NSDictionnary看起来像: [[Time: 30, IdQuestion: 6510, idProposition: 10], [Time: 30, IdQuestion: 8284, idProposition: 10]] 我的请求使用Alamofire看起来像: Alamofire.request(.POST, "http://myserver.com", parameters: ["IdQuiz":"102","IdUser":"iOSclient","User":"iOSClient","List":list ], […]
我在Rails应用程序中使用了一个PUT请求。 现在,浏览器已经实现了一个新的HTTP动词PATCH 。 所以,我想知道PATCH和PUT请求之间的主要区别是什么,以及什么时候使用其中一个。 提前致谢。
首先是一些定义: PUT在第9.6节RFC 2616中定义: PUT方法要求封闭的实体存储在提供的Request-URI下。 如果Request-URI引用一个已经存在的资源,封闭的实体应该被认为是驻留在原始服务器上的修改版本 。 如果Request-URI不指向现有资源,并且该URI能够被请求用户代理定义为新资源,则源服务器可以使用该URI创build资源。 PATCH在RFC 5789中定义: PATCH方法请求将请求实体中描述的一组变更应用于由Request-URI标识的资源。 同样根据RFC 2616第9.1.2节, PUT是幂等而PATCH不是。 现在让我们看一个真实的例子。 当我使用数据{username: 'skwee357', email: 'skwee357@domain.com'}对/users进行POST并且服务器能够创build资源时,它将响应201和资源位置(让我们假设/users/1 ),任何下次调用GET /users/1将返回{id: 1, username: 'skwee357', email: 'skwee357@domain.com'} 。 现在让我们说我想修改我的电子邮件。 电子邮件修改被认为是“一系列变化”,因此我应该使用“ 补丁文件 ”来修补 PATCH /users/1 。 在我的情况下,这将是一个JSON {email: 'skwee357@newdomain.com'} 。 服务器然后返回200(假设权限是好的)。 这引起我第一个问题: 补丁不是幂等的。 它在RFC 2616和RFC 5789中是这样说的。但是,如果我发出相同的PATCH请求(使用我的新电子邮件),我会得到相同的资源状态(将我的电子邮件修改为所请求的值)。 为什么PATCH不是幂等的? PATCH是一个相对较新的动词(RFC于2010年3月推出),它解决了“修补”或修改一组字段的问题。 在引入PATCH之前,大家都使用PUT来更新资源。 但是在PATCH引入之后,这让我很困惑PUT使用了什么呢? 这使我想到了第二个(也是主要的)问题: PUT和PATCH之间的真正区别是什么? 我读过PUT可能被用来取代特定资源下的整个实体的地方,所以应该发送完整的实体(而不是像PATCH那样的属性集合)。 这种情况下真正的实际用法是什么? 什么时候你想replace/覆盖特定资源URI下的实体,以及为什么这样的操作不被认为是更新/修补实体? 我所看到的唯一的实际用例是PUT集合,即/users来replace整个集合。 在PATCH引入之后,在特定的实体上发布PUT是没有意义的。 我错了吗?
我想了解IIS 7.5如何处理POST和PUT请求。 我正在使用OpenRasta框架编写一个RESTful服务。 POST操作没有任何问题,但是对同一个URL的PUT操作没有任何问题。 它返回错误如下 Detailed Error Information Module: IIS Web Core Notification: MapRequestHandler Handler: StaticFile Error Code: 0x80070002 这个url就像下面这个“http://localhost/MyService/Resource.Something.manifest” 相同的设置在Visual Studio开发IIS工作正常。 解 基本上,默认的ExtensionlessUrlHandler不接受PUT和DELETE谓词。 只需要添加它们。 <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
我想知道是否有可能通过java.net.HttpURLConnection发送PUT,DELETE请求(实际上)到基于HTTP的URL。 我已经阅读了很多文章描述如何发送GET,POST,TRACE,OPTIONS请求,但是我仍然没有find任何成功执行PUT和DELETE请求的示例代码。
GET : $.get(..) POST : $.post().. 那么PUT/DELETE呢?