1 contributor
<?php
function dumpPost($listPost) {
$retString='<table>'.PHP_EOL;
foreach ($listPost as $key => $value) {
$retString.=" <tr><td>$key</td><td>$value</td></tr>".PHP_EOL;
}
$retString.='</table>'.PHP_EOL;
$retString.='<hr>'.PHP_EOL;
return $retString;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Requests</title>
<style>
html {font-family: arial, verdana, sans-serif;}
h1 { font-size:20px; font-weight:bold; padding-left: 4px; }
h2 { font-size:16px; font-weight:bold; }
h3 { font-size:14px; font-weight:bold; }
.header { background-color: #5b7e96; color: #ffffff; padding-top: 2px; padding-bottom: 2px;}
.subheader { background-color: #5b7eaa; color: #ffffff; padding-top: 0px; padding-bottom: 0px; font-size: 0.8em;}
.pre {font-family: monospace;line-height:100%;font-size: 0.8em;}
input[type=submit] {
display: inline;
margin-left: 10px;
padding-top: 2px;
padding-bottom: 2px;
padding-left: 10px;
padding-right: 10px;
height: 24px;
width: 64px;
background: #4080c0;
color: #fff;
font-weight: bold;
border: 0 none;
cursor: pointer;
-webkit-border-radius: 5px;
border-radius: 5px;
}
#body {
display: block;
}
#headers {
display: block;
}
#code::before {
content: "Response Code: ";
}
#code {
font-weight: bold;
}
.column {
float: left;
width: 50%;
}
.colleft {
float:left;
width: 75%;
}
.colright {
float: left;
width: 25%;
background: #aaaaaa;
}
.row:after {
content: "";
display: table;
clear: both;
}
xmp {
max-width:99%;
font-size: 0.8em;
word-wrap: break-word;
overflow-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
}
pre {
max-width:99%;
font-size: 0.8em;
word-wrap: break-word;
overflow-wrap: break-word;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
</head>
<body>
<div class="header"><h1>Requests</h1></div>
<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
?>
<!-- GET part -->
<form action="." method="post">
<label for="method">Method:</label>
<select name="method" id="method">
<option value="GET" selected>GET</option>
<option value="POST">POST</option>
</select>
URL: <input type="text" id="url" name="url" value="https://www.google.com"><br>
<div class="row">
<div class="column">
<span id="headers">Headers:</span>
<textarea id="headers" name="headers" rows="8" cols="100">
[{"name": "Authentication", "value": "Bearer 123"},
{"name": "MyHeader", "value": "MyValue"}]
</textarea>
</div>
<div class="column">
<span id="body">Body:</span>
<textarea id="body" name="body" rows="8" cols="100">
{"keyInt": 2, "keyString": "value"}
</textarea>
</div>
</div>
<input id="submit" class="submit" type="submit">
</form>
<hr>
<?php
} else {
$url = $_POST['url'];
$method = $_POST['method'];
$body = $_POST['body'];
$reqHeaders = json_decode($_POST['headers']);
$formString='<form action="." method="post">'.PHP_EOL;
$formString.='<label for="method">Method:</label>'.PHP_EOL;
$formString.='<select name="method" id="method">'.PHP_EOL;
if( $method == "POST" ) {
$formString.='<option value="GET">GET</option>'.PHP_EOL;
$formString.='<option value="POST" selected>POST</option>'.PHP_EOL;
} else {
$formString.='<option value="GET" selected>GET</option>'.PHP_EOL;
$formString.='<option value="POST">POST</option>'.PHP_EOL;
}
$formString.='</select>'.PHP_EOL;
$formString.='URL: <input type="text" id="url" name="url" value="'.$url.'"><br>'.PHP_EOL;
$formString.='<div class="row">'.PHP_EOL;
$formString.=' <div class="column">'.PHP_EOL;
$formString.=' <span id="headers">Headers:</span>'.PHP_EOL;
$formString.=' <textarea id="headers" name="headers" rows="8" cols="100">'.PHP_EOL;
$formString.=$_POST['headers'];
$formString.=' </textarea>'.PHP_EOL;
$formString.=' </div>'.PHP_EOL;
$formString.=' <div class="column">'.PHP_EOL;
$formString.=' <span id="body">Body:</span>'.PHP_EOL;
$formString.=' <textarea id="body" name="body" rows="8" cols="100">'.PHP_EOL;
$formString.=$body;
$formString.=' </textarea>'.PHP_EOL;
$formString.=' </div>'.PHP_EOL;
$formString.='</div>'.PHP_EOL;
$formString.='<input id="submit" class="submit" type="submit">'.PHP_EOL;
$formString.='</form>'.PHP_EOL;
$formString.='<hr>'.PHP_EOL;
$formString.=dumpPost($_POST);
echo $formString;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = array();
if( $method === 'POST' ) {
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_POST, 1);
$headers[] = "Content-Type: application/x-www-form-urlencoded";
}
foreach ( $reqHeaders as $reqHeader ) {
array_push($headers,$reqHeader->name.": ".$reqHeader->value);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$info = curl_getinfo($ch);
$jsonResult=json_decode($result);
$resultString='<div class="subheader"><h2>Results</h2></div>'.PHP_EOL;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
$resultString.='<div class="row">'.PHP_EOL;
$resultString.=' <div class="colleft">'.PHP_EOL;
$resultString.=' <h3>Response Code: '.$httpcode.'<h3>'.PHP_EOL;
if( null == $jsonResult ) {
$resultString.=' <xmp>'.$result.'</xmp>'.PHP_EOL;
} else {
$resultString.=' JSON'.PHP_EOL;
$jsonString = json_encode($jsonResult, JSON_PRETTY_PRINT);
$resultString.=' <pre>'.$jsonString.'</pre>'.PHP_EOL;
}
$resultString.=' </div>'.PHP_EOL;
$resultString.=' <div class="colright">'.PHP_EOL;
$resultString.=' <h3>Details:<h3>'.PHP_EOL;
$resultString.=' <table>'.PHP_EOL;
foreach ($info as $key => $value) {
$resultString.='<tr><td>'.$key.'</td><td>'.$value.'</td></tr>'.PHP_EOL;
}
$resultString.=' </table>'.PHP_EOL;
$resultString.=' </div>'.PHP_EOL;
$resultString.='</div>'.PHP_EOL;
curl_close ($ch);
echo $resultString;
}
?>