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

时间:2011-04-20 04:17:11

标签: http post

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

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

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

17 个答案:

答案 0 :(得分:668)

http://httpbin.org/

它回应了您的请求中使用的任何类型的数据:

答案 1 :(得分:105)

http://ptsv2.com/

  

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

答案 2 :(得分:36)

http://requestb.in 与已经提到过的工具类似,也有一个非常好的用户界面。

  

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

虽然它已于2018年3月21日停止使用。

  

由于持续滥用,我们已停止公开托管的RequestBin版本,因此很难确保网站的可靠性。有关设置您自己托管的实例的信息,请参阅instructions

答案 3 :(得分:28)

查看PutsReq,它与其他人类似,但它也允许您使用JavaScript编写所需的回复。

答案 4 :(得分:20)

如果您希望本地测试服务器接受任何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]

答案 5 :(得分:11)

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

enter image description here

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

答案 6 :(得分:5)

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

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

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

答案 7 :(得分:4)

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

答案 8 :(得分:4)

nc一线本地测试服务器

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

nc -kdl localhost 8000

在另一个shell上的示例请求生成器:

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
nc包中的

netcat-openbsd广泛可用,并预装在Ubuntu上。

在Ubuntu 18.04上测试。

答案 9 :(得分:2)

我创建了一个开源的hackable本地测试服务器,您可以在几分钟内运行。您可以创建新的API,定义自己的响应并以任何方式进行破解。

Github Link https://github.com/prabodhprakash/localTestingServer

答案 10 :(得分:2)

您可以在本地(在docker或裸机上)实际运行Ken Reitz's httpbin服务器:

https://github.com/postmanlabs/httpbin

运行dockerized

docker pull kennethreitz/httpbin
docker run -p 80:80 kennethreitz/httpbin

直接在您的计算机上运行

## install dependencies
pip3 install gunicorn decorator httpbin werkzeug Flask flasgger brotlipy gevent meinheld six pyyaml

## start the server
gunicorn -b 0.0.0.0:8000 httpbin:app -k gevent

现在,您的个人httpbin实例正在http://0.0.0.0:8000上运行(对您所有的LAN都可见)

答案 11 :(得分:2)

这里是一个邮递员回声: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":{"...

答案 12 :(得分:1)

我不知道为什么这里的所有答案都很难完成非常简单的工作!

在HTTP上有请求时,实际上客户端将向服务器(read about what is a HTTP_MESSAGE发送HTTP_MESSAGE,您只需 2个简单步骤即可构建服务器:

1。安装netcat:

在许多基于unix的系统中,您已经安装了此程序,如果您使用的是google,则安装过程非常简单,您只需要一个nc.exe文件,然后复制该nc.exe的路径即可。归档到您的路径environmet变量,并使用nc -h

检查是否所有想法都可以

2。制作一个正在localhost:12345上监听的服务器:

只需在您的终端上输入nc -l -p 12345,一切就完成了! (在Mac nc -l 12345 tnx Silvio Biasiol中)


如果您是js开发人员或制作自己的http://localhost:12345或在html文件中创建表单,那么现在您有一个正在监听axios.post('http://localhost:12345', { firstName: 'Fred' })的服务器,向xhr发出发布请求并将其提交给服务器,例如<form action="http://localhost:12345" method="post">或通过curlwget等发出请求,然后检查您的终端,原始HTTP_MESSAGE应该出现在终端上,您可以开始快乐的黑客活动;)

答案 13 :(得分: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/method

这只是一个GET方法

http://127.0.0.1:5000/method/NotCorrect

这个愿望不可用。以下是可用的愿望:['application','args','authorization','blueprint','charset','close','cookies','data','date','endpoint','environ ','''','form','header','host','json','method','mimetype','module','path','pragma','range','referrer', 'scheme','shallow','stream','url','values']

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':'GET',' PATH_INFO':'/ 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':错误,'HTTP_UPGRADE_INSECURE_REQUESTS ':'1','HTTP_ACCEPT':'text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0.8','wsgi。版本':( 1,0),'wsgi.run_once':错误,'wsgi.errors':',模式'w'位于0x0000000002042150&gt;,'REMOTE_ADDR':'127.0.0.1','HTTP_ACCEPT_LANGUAGE':'en- US,en; q = 0.8','HTTP_ACCEPT_ENCODING':'gzip,deflate,s dch,br'}

答案 14 :(得分:0)

您可能不需要任何网站,只需打开浏览器,按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();

(注意:由于我的代码中有反引号字符(`),所以代码格式已损坏,所以我不知道如何纠正它)

答案 15 :(得分:0)

如果您需要或想要具有以下内容的简单HTTP服务器:

  • 可以在本地运行,也可以在与公共Internet隔离的网络中运行
  • 具有一些基本身份验证
  • 处理POST请求

我已经在PyPI上出色的SimpleHTTPAuthServer之上构建了一个。这增加了对POST请求的处理: https://github.com/arielampol/SimpleHTTPAuthServerWithPOST

否则,所有其他公开可用的选项都已经非常好且健壮。

答案 16 :(得分:-12)

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


echo "<pre>";
print_r($_POST);
echo "</pre>";

只需将您想要的内容发布到该页面即可。完成。