http - 使用来自 Haskell 的 Github Gist API

标签 http api haskell gist

首先,我以前从未真正使用过 API,也从未使用过 Haskell 中的 HTTP 库。我不确定我在这里做错了什么,所以也许知道的人可以提供帮助。

我正在使用我能读到的内容:http://github.com/defunkt/gist/blob/master/gist.rb , 即 write 方法, 写这个:

req = postRequest "http://gist.github.com/gists/new"

testPost = simpleHTTP $ req {rqBody = urlEncodeVars 
                                      [("login", "Raynes"),
                                       ("token","<removed>"),
                                       ("file_ext[gistfile1]",".hs"),
                                       ("file_name[gistfile1]","testfile"),
                                       ("file_contents[gistfile1]","main = putStrLn \"Hello, world!\"")]}

运行时,testPost 给出以下输出:

Right HTTP/1.1 302 Found 
Server: nginx/0.7.61
Date: Sun, 29 Nov 2009 17:13:51 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Status: 302 Found
Location: http://gist.github.com/gists/new
X-Runtime: 1ms
Content-Length: 98
Set-Cookie: _github_ses=BAh7BiIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA%3D%3D--884981fc5aa85daf318eeff084d98e2cff92578f; path=/; expires=Wed, 01 Jan 2020 08:00:00 GMT; HttpOnly
Cache-Control: no-cache

据我所知,Location 应该是指向新 Gist 的链接。但是,没有制定新的 Gist。我不确定我做错了什么。 Gist API 基本上没有文档,我唯一可以假设的是我没有正确翻译 Ruby。正如我所说,我以前从未真正使用过 HTTP 库。

感谢任何帮助。

最佳答案

我在阅读了一个使用 Network.Browser.browse 的例子后自己想通了。

req = "http://gist.github.com/gists"

testPost = do
  (uri, rsp) <- Network.Browser.browse $ do
                  setAllowRedirects True
                  request $ formToRequest $
                          Form POST (fromJust $ parseURI req)
                                   [("file_ext[gistfile1]",".hs"),
                                    ("file_contents[gistfile1]","main = putStrLn \"Hello, world!\""),
                                    ("login","Raynes"),
                                    ("token","removed")]
  return uri

关于http - 使用来自 Haskell 的 Github Gist API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816092/

相关文章:

haskell - 是否可以手动更新行为的值? (功能响应式(Reactive)编程,三便士)

java - 在 soapUI 中上传文件

http - REST 设计质疑需要向客户公开的资源的多个标识符

javascript - MVC 操作方法和 JavaScript

java - 跟踪对 java servlet 的调用

javascript - Brightcove Attachevent 失败

haskell - 通过动态函数列表传输数据

python - 如何在 Python 中发送和接收 HTTP POST 请求?

javascript - 等待 angular 4 服务中的 http 请求完成

exception - Haskell 记录语法并从文件中读取。记录语法的字符串。 *** 异常 : Prelude. 读取:无解析