如何将命名变量发布到PHP文件?

时间:2011-08-17 06:42:33

标签: java php java-me httpconnection

我想通过使用HttpConnection内容将其他数据中的String变量发布到PHP文件中。第一个数据是从记录库返回的byte []数据。所以它应该单独发布。那么如何发布String变量呢?

1 个答案:

答案 0 :(得分:2)

您可以使用GET或POST方法将数据传递到PHP文件。

Get方法是传递简单数据的简便方法。使用GET,您可以将变量添加到URL

示例:

192.168.1.123/myproject/uploads/treatphoto.php?myVariable1=MyContent&myVariable2=MyContent2

在PHP中:

$content1 = $_GET['myVariable1'];
$content2 = $_GET['myVariable2'];

“MyContent”的内容也需要是一个字符串编码。使用任何UrlEncoder。

要使用此方法传递byte []数组,您需要将字节数组转换为以某些可打印编码编码的字符串,如base64

GET方法还有一个可以安全传递的数据排序限制(通常为2048字节)

另一种方法“POST”更复杂(但不是很多),添加更多数据的方式。

您需要准备HttpConnection以将数据作为POST传递。 存储在urlParamenters中的数据也需要根据url enconding。 使用post传递数据类似于GET,但不是在url旁边添加所有变量,而是在httpConnection请求的Stream中添加变量。

java代码示例:

String urlParameters = "myVariable1=myValue1&myVariable2=myValue2";

HttpURLConnection connection = null;  
try {
  url = new URL(targetURL);
  connection = (HttpURLConnection)url.openConnection();

  // Use post and add the type of post data as URLENCODED
  connection.setRequestMethod("POST");
  connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

  // Optinally add the language and the data content
  connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
  connection.setRequestProperty("Content-Language", "en-US");  

  // Set the mode as output and disable cache.
  connection.setUseCaches (false);
  connection.setDoInput(true);
  connection.setDoOutput(true);

  //Send request
  DataOutputStream wr = new DataOutputStream (connection.getOutputStream ());
  wr.writeBytes (urlParameters);
  wr.flush ();
  wr.close ();


  // Get Response    
  // Optionally you can get the response of php call.
  InputStream is = connection.getInputStream();
  BufferedReader rd = new BufferedReader(new InputStreamReader(is));
  String line;
  StringBuffer response = new StringBuffer(); 
  while((line = rd.readLine()) != null) {
    response.append(line);
    response.append('\r');
  }
  rd.close();
  return response.toString();

php类似,你只需用$ _POST代替$ _GET:

$content1 = $_POST['myVariable1'];
$content2 = $_POST['myVariable2'];