Skip to main content

HTTP Request & Response service

Project description

HTTP Request & Response service
===============================

Simple service for testing HTTP/HTTPS requests.
All endpoint responses are JSON-encoded exclude `/status/{status_code: int} <http://h.wrttn.me/status/200>`_.
It's useful for testing how your own scripts deal with varying responses and requests.

.. image:: https://travis-ci.org/Lispython/httphq.png
:target: https://travis-ci.org/Lispython/httphq

INSTALLATION
------------

You can use ``easy_install`` or ``pip`` to install `httphq`:

``pip install httphq``

or

``easy_install httphq``

ENDPOINTS
---------

- `/ <http://h.wrttn.me/>`_ — Show home page
- `/ip <http://h.wrttn.me/ip>`_ — Returns client IP and proxies
- `/get <http://h.wrttn.me/get>`_ — GET method
- `/post <http://h.wrttn.me/post>`_ — POST method
- `/put <http://h.wrttn.me/put>`_ — PUT method
- `/head <http://h.wrttn.me/head>`_ — HEAD method
- `/options <http://h.wrttn.me/options>`_ — OPTIONS method
- `/delete <http://h.wrttn.me/delete>`_ — DELETE method
- `/user-agent <http://h.wrttn.me/user-agent>`_ — Returns user agent
- `/headers <http://h.wrttn.me/headers>`_ — Returns sended headers
- `/cookies <http://h.wrttn.me/cookies>`_ — Returns all user cookies
- `/cookies/set/{name: str}/{value: str} <http://h.wrttn.me/cookies/set/test_name/test_value>`_ — Setup given name and value on client
- `/status/{status_code: int} <http://h.wrttn.me/status/403>`_ — Returns given HTTP status code
- `/basic-auth/{username: str}/{password: str} <http://h.wrttn.me/basic-auth/test_username/test_password>`_ — Basic access authentication
- `/digest-auth/{qop: auth | auth-int}/{username: str}/{password: str} <http://h.wrttn.me/digest-auth/auth/test_username/test_password>`_ — Digest access authentication


HTTP status codes
-----------------

1xx Informational
~~~~~~~~~~~~~~~~~

- `100 <http://h.wrttn.me/status/100>`_ — Continue
- `101 <http://h.wrttn.me/status/101>`_ — Switching Protocols

2xx Success
~~~~~~~~~~~
- `200 <http://h.wrttn.me/status/200>`_ — OK
- `201 <http://h.wrttn.me/status/201>`_ — Created
- `202 <http://h.wrttn.me/status/202>`_ — Accepted
- `203 <http://h.wrttn.me/status/203>`_ — Non-Authoritative Information
- `204 <http://h.wrttn.me/status/204>`_ — No Content [ Won't return a response body ]
- `205 <http://h.wrttn.me/status/205>`_ — Reset Content [ Won't return a response body ]
- `206 <http://h.wrttn.me/status/206>`_ — Partial Content

3xx Redirection
~~~~~~~~~~~~~~~
- `300 <http://h.wrttn.me/status/300>`_ — Multiple Choices
- `301 <http://h.wrttn.me/status/301>`_ — Moved Permanently [ Will also return this extra header: Location: http://http.obout.ru ]
- `302 <http://h.wrttn.me/status/302>`_ — Found [ Will also return this extra header: Location: http://h.wrttn.me ]
- `303 <http://h.wrttn.me/status/303>`_ — See Other [ Will also return this extra header: Location: http://h.wrttn.me ]
- `304 <http://h.wrttn.me/status/304>`_ — Not Modified [ Won't return a response body ]
- `305 <http://h.wrttn.me/status/305>`_ — Use Proxy [ Will also return this extra header: Location: http://h.wrttn.me ]
- `306 <http://h.wrttn.me/status/306>`_ — (Unused)
- `307 <http://h.wrttn.me/status/307>`_ — Temporary Redirect [ Will also return this extra header: Location: http://h.wrttn.me ]

4xx Client Error
~~~~~~~~~~~~~~~~

- `400 <http://h.wrttn.me/status/400>`_ — Bad Request
- `401 <http://h.wrttn.me/status/401>`_ — Unauthorized [ Will also return this extra header: WWW-Authenticate: Basic realm="Fake Realm" ]
- `402 <http://h.wrttn.me/status/402>`_ — Payment Required
- `403 <http://h.wrttn.me/status/403>`_ — Forbidden
- `404 <http://h.wrttn.me/status/404>`_ — Not Found
- `405 <http://h.wrttn.me/status/405>`_ — Method Not Allowed
- `406 <http://h.wrttn.me/status/406>`_ — Not Acceptable
- `407 <http://h.wrttn.me/status/407>`_ — Proxy Authentication Required [ Will also return this extra header: Proxy-Authenticate: Basic realm="Fake Realm" ]
- `408 <http://h.wrttn.me/status/408>`_ — Request Timeout
- `409 <http://h.wrttn.me/status/409>`_ — Conflict
- `410 <http://h.wrttn.me/status/410>`_ — Gone
- `411 <http://h.wrttn.me/status/411>`_ — Length Required
- `412 <http://h.wrttn.me/status/412>`_ — Precondition Failed
- `413 <http://h.wrttn.me/status/413>`_ — Request Entity Too Large
- `414 <http://h.wrttn.me/status/414>`_ — Request-URI Too Long
- `415 <http://h.wrttn.me/status/415>`_ — Unsupported Media Type
- `416 <http://h.wrttn.me/status/416>`_ — Requested Range Not Satisfiable
- `417 <http://h.wrttn.me/status/417>`_ — Expectation Failed


5xx Server Error
~~~~~~~~~~~~~~~~

- `500 <http://h.wrttn.me/status/500>`_ — Internal Server Error
- `501 <http://h.wrttn.me/status/501>`_ — Not Implemented
- `502 <http://h.wrttn.me/status/502>`_ — Bad Gateway
- `503 <http://h.wrttn.me/status/503>`_ — Service Unavailable
- `504 <http://h.wrttn.me/status/504>`_ — Gateway Timeout
- `505 <http://h.wrttn.me/status/505>`_ — HTTP Version Not Supported


EXAMPLES
--------

.. code-block:: text

curl http://h.wrttn.me/get | python -mjson.tool
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "h.wrttn.me",
"User-Agent": "curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15"
},
"url": " http://h.wrttn.me/get"
}


curl -X POST -F "name=value" http://h.wrttn.me/post | python -mjson.tool
{
"args": {
"name": [
"value"
]
},
"body": "------------------------------eb288eb3d3e4\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nvalue\r\n------------------------------eb288eb3d3e4--\r\n",
"files": {},
"headers": {
"Accept": "*/*",
"Content-Length": "144",
"Content-Type": "multipart/form-data; boundary=----------------------------eb288eb3d3e4",
"Expect": "100-continue",
"Host": "h.wrttn.me",
"User-Agent": "curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15"
},
"ip": "127.0.0.1",
"request_time": 0.04458308219909668,
"start_time": 1313996082.806412,
"url": "http://h.wrttn.me/post"
}


curl -X POST -F "test_files=@/tmp/testfile1.txt" -F "test_files=@/tmp/testfile2.txt" http://h.wrttn.me/post | python -mjson.tool
{
"args": {},
"files": {
"pictures": [
{
"body": ";klrjewfghjnq3rjehg;fqnr___j3bnr4lgfbv4riy5bguy4br5y\n",
"content_type": "text/plain",
"filename": "testfile1.txt"
},
{
"body": ";klrlfkejwknfqwdrkjnbkfgjb3erj\n",
"content_type": "text/plain",
"filename": "testfile2.txt"
}
]
},
"body": "",
"headers": {
"Accept": "*/*",
"Content-Length": "428",
"Content-Type": "multipart/form-data; boundary=----------------------------af3ea881bfa9",
"Expect": "100-continue",
"Host": "h.wrttn.me",
"User-Agent": "curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15"
},
"ip": "127.0.0.1",
"request_time": 0.04804205894470215,
"start_time": 1313953495.331477,
"url": "http://h.wrttn.me/post"
}


SEE ALSO
--------

`http://hurl.it <http://hurl.it/>`_, `httpbin <http://httpbin.org>`_, `postbin <http://postbin.org>`_, `ifconfig.me <http://ifconfig.me/>`_, `httpstat.us <http://httpstat.us>`_


CONTRIBUTE
----------

Fork https://github.com/Lispython/httphq/ , create commit and pull request.


THANKS
------

To `Kenneth Reitz <http://kennethreitz.com/pages/open-projects.html>`_ who develop `httpbin.org <http://httpbin.org>`_

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

httphq-0.0.6.tar.gz (79.6 kB view details)

Uploaded Source

Built Distribution

httphq-0.0.6.linux-i686.exe (104.5 kB view details)

Uploaded Source

File details

Details for the file httphq-0.0.6.tar.gz.

File metadata

  • Download URL: httphq-0.0.6.tar.gz
  • Upload date:
  • Size: 79.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for httphq-0.0.6.tar.gz
Algorithm Hash digest
SHA256 59bb82de8a31c2d3cafdd2994ec12153e2f11cc4a096b68a7b4d853de6deaee3
MD5 8a7098a9d43956217d1d40efedbdf1fe
BLAKE2b-256 055df35043fbc3d67f258098b62166cf007da7cd1ee54e02a09ab67d3bba4efa

See more details on using hashes here.

File details

Details for the file httphq-0.0.6.linux-i686.exe.

File metadata

File hashes

Hashes for httphq-0.0.6.linux-i686.exe
Algorithm Hash digest
SHA256 5adb56f4373041973c98ea6706d6b0503a21af53d8b9c78c73aba116d395cbf0
MD5 45d564b9fb0457d219e5e4746b9de4f3
BLAKE2b-256 6eca39fe80c4c3d67d1c94a8655f148f4aa4068b325f2e21f33eed442c942812

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page