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

628

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

一个很好的例子在这里。它轻松地接受GET请求,但我需要一个可以接受POST请求的服务器。

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


2
你想让它记录POST请求吗? - Jared Farrish
21个回答

5
它具有很好的功能,可以在不登录的情况下获取端点(24小时临时帐户)。链接为:https://www.mockable.io

agreed具有很好的功能,可以设置您需要的特定响应,例如200/301、401等。如果您想模拟错误或在我的情况下使用Angular中的resolve时不路由到页面,当数据还没有返回以呈现该页面时,这将非常有用。 - fidev
很棒的工具。我可以根据我的程序需要设置我的响应。 - oneworld

4

4
选择一家免费的网络主机,并将以下代码添加进去。
<h1>Request Headers</h1>
<?php
$headers = apache_request_headers();
     
foreach ($headers as $header => $value) {
    echo "<b>$header:</b> $value <br />\n";
}
?>

为什么不直接使用 print_r($headers),避免使用 foreach 循环呢? - Clain Dsilva

3

1
https://quic.aiortc.org/httpbin/ - 目前无法使用 - ankitjaininfo

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)

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

(原文已含有HTML标签)

  • http://127.0.0.1:5000/method

    This is just a GET method
    
  • http://127.0.0.1:5000/method/NotCorrect

    This wish is not available. The following are the available wishes:
    
    ['application', 'args', 'authorization', 'blueprint', 'charset', 'close', 'cookies', 'data', 'date', 'endpoint', 'environ', 'files', 'form', 'headers', '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, like 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': ", mode 'w' at 0x0000000002042150>", 'REMOTE_ADDR': '127.0.0.1', 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8', 'HTTP_ACCEPT_ENCODING': 'gzip, deflate, sdch, br'}
    

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

使用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();

使用纯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();

甚至可以使用ASP.Net:
var url = "https://Payment.com/index";
Response.Clear();
var sb = new System.Text.StringBuilder();

sb.Append("<html>");
sb.AppendFormat("<body onload='document.forms[0].submit()'>");
sb.AppendFormat("<form action='{0}' method='post'>", url);
sb.AppendFormat("<input type='hidden' name='merchantId' value='{0}'>", "C668");
sb.AppendFormat("<input type='hidden' name='Token' value='{0}'>", "22720281459");
sb.Append("</form>");
sb.Append("</body>");
sb.Append("</html>");
Response.Write(sb.ToString());
Response.End();

1
请解释其中一个选项如何适用于OP所问的问题。 - Mike
你回答的问题和所问的问题完全不同。问题是如何检查HTTP客户端正在进行的请求的详细信息。而你的回答展示了创建HTTP请求的方法。 - wfaulk

1

另一个提供一些自定义选项并且易于使用(无需安装、注册)的工具是Beeceptor。您可以创建一个端点,向其发送初始请求,并可以调整响应。

Beeceptor不仅是一个HTTP检查工具,还可以实现更多功能:

  • HTTP拦截和检查

    • 您可以定义规则以发送特定的HTTP响应代码。
    • 专用的子域或端点以检查传入请求。
    • 它只需要简单操作,将其作为API基本URL的替代品(在代码/配置中)即可检查所有传入路径。
  • 模拟服务器 - 发送所需的HTTP响应。您可以定义规则来匹配基于路由/路径的请求。Beeceptor的模拟模板非常强大,允许您选择查询参数并发送响应有效负载。

  • 反向代理:一个中间人攻击(MITM)或反向代理,可让您将传入请求路由到目标服务器并检查流量。当在应用程序日志中没有记录载荷时,这非常有用于调试。


1
如果您需要或想要一个简单的HTTP服务器,并具备以下功能:
  • 可以在本地或网络中运行,不与公共互联网相连
  • 具有基本身份验证
  • 处理POST请求
我在PyPI上优秀的SimpleHTTPAuthServer基础上构建了一个服务器。这个服务器增加了对POST请求的处理: https://github.com/arielampol/SimpleHTTPAuthServerWithPOST 否则,所有其他公开可用的选项已经非常好和强大。

0

我一直都在使用这个 REST API:https://restful-api.dev

它可以无限期地存储创建的对象。 而且,它的模式非常灵活,你可以传递任何 JSON 数据。

作为一个前端开发者,当我需要创建一些示例数据时,这个API非常有用。这是我找到的唯一一个可以免费使用、无需注册或令牌的API。


0

我喜欢使用reqres.in,它简单地打开了HTTP的基本方法的使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接