我有一个Django视图,返回一个curl请求上的HTTP 301: grapefruit:~ pete$ curl -I http://someurl HTTP/1.1 301 MOVED PERMANENTLY Date: Fri, 16 Oct 2009 19:01:08 GMT Server: Apache/2.2.9 (Win32) mod_wsgi/2.5 Python/2.6.2 PHP/5.2.6 Location: http://someurl Content-Type: text/html; charset=utf-8 我无法从curl中获取页面的内容。 但是,如果我使用浏览器访问该页面,则会看到预期的内容。 有任何想法吗? 谢谢,皮特
在深入细节之前,我知道在Stackoverflow上有很多对话和相关的问题。 所有这些都以不同的方式帮助我,所以我想我把所有的发现放在一起作为一个有组织的常见问题总结我的发现。 相关的概念 当然,你知道这些,但我只是写他们作为一个快速审查。 随时编辑,以防万一我失去了一些东西。 HTTP POST请求: 当您愿意将对象发送到Web服务或您的服务器端应用程序时,会使用发布请求。 连载: 是从您的Web浏览器到您的服务器端应用程序的对象的过程。 可以使用jQuery Ajax调用或Curl post请求。 序列化协议: 这些日子里最stream行的是JSON和XML。 由于XML标签的性质,XML由于序列化的XML对象的规模相对较大而变得越来越stream行。 在这个FAQ中,主要关注的是JSON2序列化。 弹簧: Spring框架及其强大的注释使得以有效的方式公开Web服务成为可能。 Spring中有很多不同的库。 这里我们关注的是Spring web MVC 。 curl与JQuery: 这些是您可以用来在您的客户端进行发布请求的工具。 即使您打算使用JQuery ajax调用,我build议您使用Curl进行debugging,因为它在发出请求后提供了详细的响应。 @RequestBody与@ RequestParam / @ PathVariable与@ModelAttribute: 如果您的Web服务不依赖于Java EE模型,则必须使用@RequestBody。 如果使用模型并将JSON对象添加到模型中,则可以通过@ModelAttribute访问该对象。 只有在您的请求是GET请求或GET和POST请求组合的情况下,您将需要使用@ RequestParam / @ PathVariable。 @RequestBody vs @ResposeBody: 正如你从名字中看到的那样简单,如果在服务器端方法处理请求之后发送客户端的响应,则只需要@ResponseBody。 RequestMappingHandlerAdapter vs AnnotationMethodHandlerAdapter: RequestMappingHandlerAdapter是Spring框架的新的映射处理程序,它自Spring 3.1以来取代了AnnotationMethodHandlerAdapter。 如果您现有的configuration仍然在AnnotationMethodHandlerAdapter中,您可能会发现这个post很有用。 在我的文章中提供的configuration将给你一个关于如何设置RequestMappingHandlerAdapter的想法。 build立 您将需要设置一个消息转换器。 这就是你的序列化的JSON消息正文在服务器端转换成本地java对象的方式。 […]
我正在执行使用cron文件的Facebook计数function。 哪个cron每10分钟运行一次,并计算一个页面的总数。 for($i=0;$i<3;$i++){ $source_url =$cars[$i]; $rest_url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($source_url); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL,$rest_url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($curl); curl_close($curl); $message=stripslashes($content); $xml_record = simplexml_load_string($message); $fb_like_count = $xml_record->link_stat->like_count; echo "".$fb_like_count; mail("abc@gmail.com","hi".$fb_like_count,$message); } 但我geting未定义的调用函数错误。
我一直在为它构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
我有WordPress的restAPI和WordPress OAuth服务器安装插件设置,并试图使用http://sevengoslings.net/~fangel/oauth-explorer/进行身份validation,每次通话内容不给我的OAuth令牌或OAuth秘密我需要。 我尝试了这些步骤https://wordpress.org/support/topic/json-rest-api-from-mobile-app-with-authentication 1. Enter base url (http(s)://your.domain.com/oauth1 2. Access token = request 3. Authorize = authorize 4. Access_Token = access 5. Enter your consumer key and secret (leave method as HMAC-SHA1) 点击Get Request Token ,您将获得呼叫内容 我应该在通话内容中得到这个 Call content now = oauth_token=xxxxxxxxxxxxxxx&oauth_token_secret=xxxxxxxxxxxxxxxxxxxxx&oauth_call_back_confirmed=true 但是我只能得到这个 page not found 在这里,他们无法获得三脚OAuth1.0a的工作,所以他们使用基本的OAuth,这需要另一个插件,不build议生产。 我应该使用不同的签名方法吗? 我正在寻找两个curl命令来从服务器获得OAuth授权,另一个交易授权访问令牌+刷新令牌。
我想在PHP中集成AadhaarvalidationAPI。 我试过这个 ,写了API访问的代码。 如何在PHP中生成下面的XMLencryption字段数据? 这个示例代码是用Java编写的。 <Auth uid="" tid="" ac="" sa="" ver="" txn="" lk=""> <Uses pi="" pa="" pfa="" bio="" bt="" pin="" otp=""/> <Tkn type="" value=""/> <Meta udc="" fdc="" idc="" pip="" lot=”G|P” lov=""/> <Skey ci="" ki="">encrypted and encoded session key</Skey> <Data type=”X|P”>encrypted PID block</Data> <Hmac>SHA-256 Hash of Pid block, encrypted and then encoded</Hmac> <Signature>Digital signature of AUA</Signature> […]
我试图通过Gmail OAuth 2.0访问用户的邮件,我通过Google的OAuth 2.0 Playground 在这里,他们已经指定我需要发送这个HTTP请求: POST /mail/feed/atom/ HTTP/1.1 Host: mail.google.com Content-length: 0 Content-type: application/json Authorization: OAuth SomeHugeOAuthaccess_tokenThatIReceivedAsAString 我试过编写一个代码来发送这个请求像这样: $crl = curl_init(); $header[] = 'Content-length: 0 Content-type: application/json'; curl_setopt($crl, CURLOPT_HTTPHEADER, $header); curl_setopt($crl, CURLOPT_POST, true); curl_setopt($crl, CURLOPT_POSTFIELDS, urlencode($accesstoken)); $rest = curl_exec($crl); print_r($rest); 不工作,请帮助。 🙂 更新:我带了Jason McCreary的build议,现在我的代码如下所示: $crl = curl_init(); $headr = array(); $headr[] = 'Content-length: 0'; […]
其他一些网站使用cURL和假http引用来复制我的网站内容。 我们有没有办法检测cURL或不是真正的networking浏览器?
我有一个脚本,通过curl HTTP调用删除和重新创build作业,我想摆脱任何硬编码的“用户名:密码”。 例如curl -X POST $url –user username:password 注意事项: jenkinsCLI (可能不是一个选项)。 一个应该能够实现与Jenkins API(创build工作等)相同的CLI,但据我所知,jenkinsCLI不是一个很好的替代品,因为创build工作将只会出现在jenkins后重新启动或“重新加载从磁盘configuration“,这将取消任何其他正在运行的作业。 API令牌 。 找不到如何获取用户令牌,然后将其作为parameter passing给脚本,但这可能是一个解决scheme..
我试图使用CURL这样的请求: curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 其中OXYugGKg207g5uN/07V是一个散列,所以我想我需要进行编码之前做这个请求。 我试过curl -X DELETE –data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V" 有些想法?