我需要一个实时测试服务器,该服务器通过HTTP GET接受我对基本信息的请求,并且还允许我进行POST(即使它实际上没有做任何事情)。这完全是出于测试目的。
一个很好的例子在这里。它很容易接受GET请求,但是我也需要一个接受POST请求的人。
有人知道我也可以发送虚拟测试消息的服务器吗?
我需要一个实时测试服务器,该服务器通过HTTP GET接受我对基本信息的请求,并且还允许我进行POST(即使它实际上没有做任何事情)。这完全是出于测试目的。
一个很好的例子在这里。它很容易接受GET请求,但是我也需要一个接受POST请求的人。
有人知道我也可以发送虚拟测试消息的服务器吗?
Answers:
它回显您的请求中用于以下任何类型的数据:
$ pip install httpbin gunicorn && gunicorn httpbin:app
提到的@ user3280180 是httpbin.org
curl -iX POST httpbin.org/post
它返回一个200
“在这里,您将找到一个服务器,该服务器接收您希望提供的任何POST并存储内容供您查看。”
http://requestb.in与已经提到的工具相似,并且具有非常好的UI。
RequestBin为您提供了一个URL,该URL将收集对其发出的请求,并让您以人性化的方式检查它们。使用RequestBin查看HTTP客户端正在发送的内容或检查和调试Webhook请求。
尽管它已于2018年3月21日停产。
由于滥用行为的持续存在,我们很难将其可靠地保持正常运行,因此我们已停止了RequestBin的公共托管版本。请参阅说明为建立自己的自托管的实例。
看一下PutsReq,它与其他类似,但是它也允许您使用JavaScript编写所需的响应。
如果您希望本地测试服务器接受任何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]
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
nc
该netcat-openbsd
软件包中的广泛可用,并预装在Ubuntu上。
在Ubuntu 18.04上测试。
nc -kdl localhost 8000
会循环听,所以不需要bash while
。但是,它nc
不会响应,因此测试查询将一直等到无响应超时。
while true; do echo -e "HTTP/1.1 200 OK\n" | nc -Nl 8000; done
每次都会使nc用200 OK代码响应。
这是一个邮递员回声: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":{"...
https://www.mockable.io。它具有不错的功能,无需登录即可获取端点(24小时临时帐户)
我创建了一个开源的,可入侵的本地测试服务器,您可以在几分钟内运行它。您可以创建新的API,定义自己的响应并以任何希望的方式对其进行破解。
Github链接:https : //github.com/prabodhprakash/localTestingServer
您可能不需要任何网站,只需打开浏览器,按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();
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(“”); sb.AppendFormat(“”); sb.AppendFormat(“”,url); sb.AppendFormat(“”,“ C668”); sb.AppendFormat(“”,“ 22720281459”); sb.Append(“”); sb.Append(“”); sb.Append(“”); Response.Write(sb.ToString()); Response.End();
(注意:由于代码中的反引号字符(`)破坏了代码格式,因此我不知道如何纠正它)
我不确定是否有人愿意花很多时间来测试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)
现在让我们尝试一些呼叫。我正在使用浏览器。
这只是一个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”}