HTTP测试服务器接受GET / POST请求


448

我需要一个实时测试服务器,该服务器通过HTTP GET接受我对基本信息的请求,并且还允许我进行POST(即使它实际上没有做任何事情)。这完全是出于测试目的。

一个很好的例子在这里。它很容易接受GET请求,但是我也需要一个接受POST请求的人。

有人知道我也可以发送虚拟测试消息的服务器吗?


2
您要它记录POST吗?
贾里德·法瑞什

4
我想这就是您想要的。github.com/jar-o/dumdum不需要代码
jar

Answers:


735

http://httpbin.org/

它回显您的请求中用于以下任何类型的数据:


它返回一个描述您提出的请求的JSON。
tbraun 2014年

4
是否还可以创建本地httpbin服务器?
user3280180 2014年

4
$ pip install httpbin gunicorn && gunicorn httpbin:app 提到的@ user3280180 是httpbin.org
HVNSweeting,2015年

这是最好的答案/服务,imo。我创建了一个显示如何使用它的简单codepen:codepen.io/nickleus/pen/qOjOGe
Nick Humphrey,

6
@therobyouknow单击链接将执行GET,但是如果对该URL执行POST,它将起作用。尝试:curl -iX POST httpbin.org/post它返回一个200
罗伯特

120

http://ptsv2.com/

“在这里,您将找到一个服务器,该服务器接收您希望提供的任何POST并存储内容供您查看。”


7
如果您正在运行从内部无权访问的远程服务器触发的请求,那么这是一个很好的选择,因为它将保存该请求供以后检索。
ozmo 2012年

2
也可以尝试requestb.in-它也保存请求以供以后检查。
Maksym Davydov'3

我知道实际上可以使用任何东西...但是是否有一个“ gettestserver”预计可以长期使用?
byxor 16/09/26

2
httpbin.org/put不同,它返回一个非常有用的响应,该响应提供了有关您的请求的详细信息。特别是在文件上传的情况下,这非常有帮助,因为您可以在服务器上看到文件上传,我认为这在httpbin.org上是不可能的。
ViFI

1
这样做的“酷”之处在于它不使用TLS / HTTPS,这使得调试在线字节变得非常容易。
ntninja

40

http://requestb.in与已经提到的工具相似,并且具有非常好的UI。

RequestBin为您提供了一个URL,该URL将收集对其发出的请求,并让您以人性化的方式检查它们。使用RequestBin查看HTTP客户端正在发送的内容或检查和调试Webhook请求。

尽管它已于2018年3月21日停产。

由于滥用行为的持续存在,我们很难将其可靠地保持正常运行,因此我们已停止了RequestBin的公共托管版本。请参阅说明为建立自己的自托管的实例。


3
PutsReq也类似于RequestBin,但是它允许您使用JS编写所需的响应。
Pablo Cantero

2
RequestBin不再可用。
AmokHuginnsson


25

Webhook测试器是一个很棒的工具:https ://webhook.site (GitHub

在此处输入图片说明

对我来说很重要,它显示了请求者的IP,当您需要将IP地址列入白名单但不确定是什么时,这很有用。


我需要使响应正文包含要发布到的网站的URL。但是该网站在创建后会得到一个随机的GUID,并且似乎只有一种方法可以在您单击该New URL按钮后在创建网站之前编辑响应。有没有办法创建一个新的URL,然后再编辑响应正文?
尼克

大拇指https
Oleg Khalidov

23

如果您希望本地测试服务器接受任何URL并将请求仅转储到控制台,则可以使用node:

const http = require("http");

const hostname = "0.0.0.0";
const port = 3000;

const server = http.createServer((req, res) => {
  console.log(`\n${req.method} ${req.url}`);
  console.log(req.headers);

  req.on("data", function(chunk) {
    console.log("BODY: " + chunk);
  });

  res.statusCode = 200;
  res.setHeader("Content-Type", "text/plain");
  res.end("Hello World\n");
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://localhost:${port}/`);
});

将其保存在文件“ echo.js”中,并如下运行:

$ node echo.js
Server running at http://localhost:3000/

然后,您可以提交数据:

$ curl -d "[1,2,3]" -XPOST http://localhost:3000/foo/bar

这将显示在服务器的标准输出中:

POST /foo/bar
{ host: 'localhost:3000',
  'user-agent': 'curl/7.54.1',
  accept: '*/*',
  'content-length': '7',
  'content-type': 'application/x-www-form-urlencoded' }
BODY: [1,2,3]


18

nc 一线本地测试服务器

在Linux下一行安装本地测试服务器:

nc -kdl localhost 8000

另一个外壳上的样本请求制作者:

wget http://localhost:8000

然后在第一个外壳上,您会看到发出的请求:

GET / HTTP/1.1
User-Agent: Wget/1.19.4 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: localhost:8000
Connection: Keep-Alive

ncnetcat-openbsd软件包中的广泛可用,并预装在Ubuntu上。

在Ubuntu 18.04上测试。


2
nc -kdl localhost 8000会循环听,所以不需要bash while。但是,它nc不会响应,因此测试查询将一直等到无响应超时。
aks

3
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; done每次都会使nc用200 OK代码响应。
nikniknik

6

这是一个邮递员回声:https : //docs.postman-echo.com/

例:

curl --request POST \
  --url https://postman-echo.com/post \
  --data 'This is expected to be sent back as part of response body.'

响应:

{"args":{},"data":"","files":{},"form":{"This is expected to be sent back as part of response body.":""},"headers":{"host":"postman-echo.com","content-length":"58","accept":"*/*","content-type":"application/x-www-form-urlencoded","user-agent":"curl/7.54.0","x-forwarded-port":"443","x-forwarded-proto":"https"},"json":{"...

5

创建选择一个免费的虚拟主机并输入以下代码

 <h1>Request Headers</h1>
 <?php
 $headers = apache_request_headers();

 foreach ($headers as $header => $value) {
     echo "<b>$header:</b> $value <br />\n";
 }
 ?>

4

https://www.mockable.io。它具有不错的功能,无需登录即可获取端点(24小时临时帐户)


协议具有不错的功能,您可以在其中设置所需的特定响应。例如200 / 301、401等。如果您想模拟错误,或者在我的情况下在Angular中使用resolve时不路由到页面(如果要渲染该页面的数据还没有回来(还)
很好


2

您可能不需要任何网站,只需打开浏览器,按F12即可访问开发人员工具>控制台,然后在控制台中编写一些JavaScript代码即可。

在这里,我分享一些实现此目的的方法:

对于GET请求:*。使用jQuery:

$.get("http://someurl/status/?messageid=597574445", function(data, status){
    console.log(data, status);
  });

对于POST请求:1.使用jQuery $ .ajax:

var url= "http://someurl/",
        api_key = "6136-bc16-49fb-bacb-802358",
        token1 = "Just for test",
        result;
    $.ajax({
          url: url,
          type: "POST",
          data: {
            api_key: api_key,
            token1: token1
          },
        }).done(function(result) {
                console.log("done successfuly", result);
        }).fail(function(error) {

          console.log(error.responseText, error);

        });
  1. 使用jQuery,追加并提交

     var merchantId = "AA86E",
            token = "4107120133142729",
            url = "https://payment.com/Index";
    
        var form = `<form id="send-by-post" method="post" action="${url}">
                                    <input id="token" type="hidden" name="token" value="${merchantId}"/>
                                    <input id="merchantId" name="merchantId" type="hidden" value="${token}"/>
                                    <button type="submit" >Pay</button>
                        </div>
                    </form> `; 
        $('body').append(form);
        $("#send-by-post").submit();//Or $(form).appendTo("body").submit();
    
    1. 使用纯JavaScript:

    var api_key = "73736-bc16-49fb-bacb-643e58", recipient = "095552565", token1 = "4458", url = 'http://smspanel.com/send/';

var form = `<form id="send-by-post" method="post" action="${url}"> <input id="api_key" type="hidden" name="api_key" value="${api_key}"/> <input id="recipient" type="hidden" name="recipient" value="${recipient}"/> <input id="token1" name="token1" type="hidden" value="${token1}"/> <button type="submit" >Send</button> </div> </form>`;

document.querySelector("body").insertAdjacentHTML('beforeend',form);
document.querySelector("#send-by-post").submit();
  1. 甚至使用ASP.Net:

    var url =“ https://Payment.com/index ”; Response.Clear(); var sb = new System.Text.StringBuilder();

    sb.Append(“”); sb.AppendFormat(“”); sb.AppendFormat(“”,url); sb.AppendFormat(“”,“ C668”); sb.AppendFormat(“”,“ 22720281459”); sb.Append(“”); sb.Append(“”); sb.Append(“”); Response.Write(sb.ToString()); Response.End();

(注意:由于代码中的反引号字符(`)破坏了代码格式,因此我不知道如何纠正它)


1

我不确定是否有人愿意花很多时间来测试GET和POST调用。我使用了Python Flask模块,并编写了一个功能类似于@Robert共享的功能。

from flask import Flask, request
app = Flask(__name__)

@app.route('/method', methods=['GET', 'POST'])
@app.route('/method/<wish>', methods=['GET', 'POST'])
def method_used(wish=None):
    if request.method == 'GET':
        if wish:
            if wish in dir(request):
                ans = None
                s = "ans = str(request.%s)" % wish
                exec s
                return ans
            else:
                return 'This wish is not available. The following are the available wishes: %s' % [method for method in dir(request) if '_' not in method]
        else:
            return 'This is just a GET method'
    else:
        return "You are using POST"

当我运行此命令时,将执行以下操作:

C:\Python27\python.exe E:/Arindam/Projects/Flask_Practice/first.py
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 581-155-269
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

现在让我们尝试一些呼叫。我正在使用浏览器。

http://127.0.0.1:5000/方法

这只是一个GET方法

http://127.0.0.1:5000/method/NotCorrect

此愿望不可用。以下是可用的愿望:[“应用程序”,“ args”,“授权”,“蓝图”,“字符集”,“关闭”,“ cookie”,“数据”,“日期”,“端点”,“环境” ','文件','表格','标题','主机','json','方法','mimetype','模块','路径','编译指示','范围','引荐来源网址' “方案”,“浅”,“流”,“ url”,“值”]

http://127.0.0.1:5000/method/environ

{'wsgi.multiprocess':False,'HTTP_COOKIE':'csrftoken = YFKYYZl3DtqEJJBwUlap28bLG1T4Cyuq','SERVER_SOFTWARE':'Werkzeug / 0.12.2','SCRIPT_NAME':``,'REQUEST_METHOD':' '/ method / environ','SERVER_PROTOCOL':'HTTP / 1.1','QUERY_STRING':'','werkzeug.server.shutdown':,'HTTP_USER_AGENT':'Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 54.0.2840.71 Safari / 537.36','HTTP_CONNECTION':'keep-alive','SERVER_NAME':'127.0.0.1','REMOTE_PORT':49569,'wsgi.url_scheme':' http”,“ SERVER_PORT”:“ 5000”,“ werkzeug.request”:,“ wsgi.input”:,“ HTTP_HOST”:“ 127.0.0”。1:5000','wsgi.multithread':False,'HTTP_UPGRADE_INSECURE_REQUESTS':'1','HTTP_ACCEPT':'text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, /; q = 0.8','wsgi.version':(1,0),'wsgi.run_once':False,'wsgi.errors':',模式'w'在0x0000000002042150>,'REMOTE_ADDR':'127.0.0.1 ”,“ HTTP_ACCEPT_LANGUAGE”:“ en-US,zh; q = 0.8”,“ HTTP_ACCEPT_ENCODING”:“ gzip,deflate,sdch,br”}


-13

自己设置一个即可。将此代码段复制到您的Web服务器。

回声“ <pre>”;
print_r($ _ POST);
回声“ </ pre>”;

只需在页面上发布您想要的内容即可。做完了


5
关键是不必使用服务器。例如,如果您想向SO发布问题,但是您的服务器可能已经存在很长时间了,该怎么办。OP要求提供诸如jsfiddle之类的永久性东西,以用于测试或演示发布。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.