php对接java接口
<p>1、php curl 传参形式</p><div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">function</span> send(<span style="color: rgba(128, 0, 128, 1)">$url</span>,<span style="color: rgba(128, 0, 128, 1)">$postData</span><span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(128, 0, 128, 1)">$ch</span> =<span style="color: rgba(0, 0, 0, 1)"> curl_init();
</span><span style="color: rgba(128, 0, 128, 1)">$headers</span> = <span style="color: rgba(0, 0, 255, 1)">array</span>("Content-type: application/json;charset='utf-8'",
"Accept: application/json", "Cache-Control: no-cache", "Pragma: no-cache"<span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_HTTPHEADER, <span style="color: rgba(128, 0, 128, 1)">$headers</span><span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_URL,<span style="color: rgba(128, 0, 128, 1)">$url</span><span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_HEADER, 0<span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_POST, 1<span style="color: rgba(0, 0, 0, 1)">);
curl_setopt(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span>, CURLOPT_POSTFIELDS, <span style="color: rgba(128, 0, 128, 1)">$postData</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(128, 0, 128, 1)">$data</span> = curl_exec(<span style="color: rgba(128, 0, 128, 1)">$ch</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$data</span> === <span style="color: rgba(0, 0, 255, 1)">false</span> || <span style="color: rgba(128, 0, 128, 1)">$data</span> === <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(128, 0, 128, 1)">$error_code</span> = curl_errno(<span style="color: rgba(128, 0, 128, 1)">$ch</span><span style="color: rgba(0, 0, 0, 1)">);
curl_close(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$error_code</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
curl_close(</span><span style="color: rgba(128, 0, 128, 1)">$ch</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> json_decode(<span style="color: rgba(128, 0, 128, 1)">$data</span>,<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 255, 1)">function</span> send2(<span style="color: rgba(128, 0, 128, 1)">$url</span><span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(128, 0, 128, 1)">$curl</span> =<span style="color: rgba(0, 0, 0, 1)"> curl_init();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置抓取的url</span>
curl_setopt(<span style="color: rgba(128, 0, 128, 1)">$curl</span>, CURLOPT_URL, <span style="color: rgba(128, 0, 128, 1)">$url</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置头文件的信息作为数据流输出</span>
curl_setopt(<span style="color: rgba(128, 0, 128, 1)">$curl</span>, CURLOPT_HEADER, 0<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置获取的信息以文件流的形式返回,而不是直接输出。</span>
curl_setopt(<span style="color: rgba(128, 0, 128, 1)">$curl</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">执行命令</span>
<span style="color: rgba(128, 0, 128, 1)">$data</span> = curl_exec(<span style="color: rgba(128, 0, 128, 1)">$curl</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">关闭URL请求</span>
<span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(128, 0, 128, 1)">$data</span> === <span style="color: rgba(0, 0, 255, 1)">false</span> || <span style="color: rgba(128, 0, 128, 1)">$data</span> === <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(128, 0, 128, 1)">$error_code</span> = curl_errno(<span style="color: rgba(128, 0, 128, 1)">$curl</span><span style="color: rgba(0, 0, 0, 1)">);
curl_close(</span><span style="color: rgba(128, 0, 128, 1)">$curl</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$error_code</span><span style="color: rgba(0, 0, 0, 1)">;
} </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
curl_close(</span><span style="color: rgba(128, 0, 128, 1)">$curl</span><span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span> json_decode(<span style="color: rgba(128, 0, 128, 1)">$data</span>,<span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(128, 0, 128, 1)">$url</span> = ""<span style="color: rgba(0, 0, 0, 1)">;
send(</span><span style="color: rgba(128, 0, 128, 1)">$url</span>,json_encode([]));<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">以json body方式传参</span>
<span style="color: rgba(128, 0, 128, 1)">$url</span> .="?param1=1&param2=2"<span style="color: rgba(0, 0, 0, 1)">;
send2(</span><span style="color: rgba(128, 0, 128, 1)">$url</span>); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">params 传参</span></pre>
</div>
<p> </p>
<p>2、java加密类型、对应php类型</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">*********************加密************************</span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
String txt</span>="66666"<span style="color: rgba(0, 0, 0, 1)">;
String key</span>="123456781234567812345678"; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 必须24位
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加密</span>
String keyStr =<span style="color: rgba(0, 0, 0, 1)"> key;
</span><span style="color: rgba(0, 0, 255, 1)">byte</span> key_byte[] = keyStr.getBytes();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 3DES 24 bytes key</span>
SecretKey k = <span style="color: rgba(0, 0, 255, 1)">new</span> SecretKeySpec(key_byte, "DESede"<span style="color: rgba(0, 0, 0, 1)">);
javax.crypto.Cipher cipher </span>= javax.crypto.Cipher.getInstance("DESede"<span style="color: rgba(0, 0, 0, 1)">);
cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, k);
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[] resultByte = cipher.doFinal(txt.getBytes("utf-8"<span style="color: rgba(0, 0, 0, 1)">));
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> String(resultByte, "UTF-8"<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">*********************解密************************</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">str 加密串 pass 密钥</span>
SecretKey deskey = <span style="color: rgba(0, 0, 255, 1)">new</span> SecretKeySpec(pass.getBytes(), 'DESede'<span style="color: rgba(0, 0, 0, 1)">);
</span>
Cipher c1 = Cipher.getInstance('DESede'<span style="color: rgba(0, 0, 0, 1)">);
c1.init(Cipher.ENCRYPT_MODE, deskey);
</span><span style="color: rgba(0, 0, 255, 1)">byte</span>[] resultByte =<span style="color: rgba(0, 0, 0, 1)"> c1.doFinal(Base64.decode(str));
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> String(resultByte, "UTF-8"<span style="color: rgba(0, 0, 0, 1)">);
} </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e) {
}</span></pre>
</div>
<p>php:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> a{
</span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(128, 0, 128, 1)">$key</span> = '123456781234567812345678'<span>; <br><br></span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(128, 0, 128, 1)">$method</span> = 'DES-EDE3';<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加密方法 加密模式有:DES-ECB、DES-CBC、DES-CTR、DES-OFB、DES-CFB。</span> <br><br><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(128, 0, 128, 1)">$options</span> = OPENSSL_RAW_DATA;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">数据格式选项(可选)<br><br></span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(128, 0, 128, 1)">$iv</span> = '';<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">加密初始化向量(可选<br><br></span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">function</span> encrypts(<span style="color: rgba(128, 0, 128, 1)">$data</span><span>) { <br><br></span><span style="color: rgba(128, 0, 128, 1)">$result</span> = openssl_encrypt(<span style="color: rgba(128, 0, 128, 1)">$data</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>->method, <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 128, 128, 1)">key</span>,<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span>options); </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 128, 128, 1)">base64_encode</span>(<span style="color: rgba(128, 0, 128, 1)">$result</span><span>);<br><br> } <br><br></span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">function</span> decrypt(<span style="color: rgba(128, 0, 128, 1)">$encrypted</span><span>) { <br><br></span><span style="color: rgba(128, 0, 128, 1)">$encrypted</span> = <span style="color: rgba(0, 128, 128, 1)">base64_decode</span>(<span style="color: rgba(128, 0, 128, 1)">$encrypted</span><span>); </span><span style="color: rgba(128, 0, 128, 1)">$sign</span> = openssl_decrypt(<span style="color: rgba(128, 0, 128, 1)">$encrypted</span>, <span style="color: rgba(128, 0, 128, 1)">$this</span>->method, <span style="color: rgba(128, 0, 128, 1)">$this</span>-><span style="color: rgba(0, 128, 128, 1)">key</span>,<span style="color: rgba(128, 0, 128, 1)">$this</span>-><span>options); </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 128, 1)">$sign</span><span>; } <br>}</span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/-lin/p/12917975.html
頁:
[1]