こんにちは。
PHPの配列をJavaのServletにHTTP-POSTしたいのですが、getParameterValuesで取得してもnullになってしまい困っています。
htmlのformのcheckboxのような、多重データはうまく処理するようです。
困っています。アドバイスよろしくお願いします。
http://localhost/post.phpをたたきます。
中で、http://localhost:8080/app/testにHTTP-POSTしています。
しかしnullになって、"data is empty"が表示されます。
post.phpのurlをpostcheck.phpにすると、'a'が表示されます。
http://localhost/form.htmlをたたいた場合にはservletは
正しく、'data is a'を返します。
よろしくお願いします。
http://localhost:8080/app/test
Java
1import java.io.*; 2import javax.servlet.*; 3import javax.servlet.http.*; 4 5public class App extends HttpServlet { 6 public void doPost (HttpServletRequest req, HttpServletResponse res) 7 throws ServletException, IOException{ 8 PrintWriter out; 9 10 String[] data=req.getParameterValues("data"); 11 res.setContentType("text/plain; charset=utf-8"); 12 out = res.getWriter(); 13 String str="empty"; 14 if(data!=null){ 15 str=data[0]; 16 } 17 out.println("data is "+str); 18 } 19}
PHP
1$data=array('data'=>array('a','b')); 2$url='http://localhost:8080/app/test'; 3$ch = curl_init($url); 4curl_setopt($ch,CURLOPT_POST, TRUE); 5curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data)); 6curl_setopt($ch,CURLOPT_HEADER, 0); 7curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 8curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 9$result=curl_exec($ch); 10curl_close($ch); 11print $result; 12?>
$url='http://localhost/postcheck.php';
PHP
1<?php 2print $_REQUEST['data'][0]; 3?>
HTML
1<!DOCTYPE HTML> 2<html> 3<body> 4<form action="http://localhost:8080/app/test" method="post"> 5<p><input type="checkbox" name="data" value="a"/>ABC</p> 6<p><input type="checkbox" name="data" value="b"/>DEF</p> 7<p><input type="submit" value="送信"/></p> 8</form> 9</body> 10</html>
回答2件
あなたの回答
tips
プレビュー