2013-07-17 2 views
1

Я использую HttpURLConnection в Java (не Javascript), чтобы вызвать PHP-файл, который ищет поле в базе данных mySQL. В PHP, как мне вернуть содержимое поля (String) и в Java, как я могу их получить? Спасибо. Удивительный указывает на любого, кто может помочь. Лол.Как получить возвращаемое значение из php-файла, называемого Java

Пример кода:

Java:

import java.net.HttpURLConnection; 
import java.net.URL; 
... 
public static void Connect(String address){ 
    URL url = new URL("http://www.foo.com/getInfo.php?id=203&user=johndoe); 
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
    String = ??? // What do I need to do to get the string from the PHP file? 
    con.disconnect(); 
} 

PHP:

<?php 

$theFile = "../db_user_password"; 
$f = fopen($theFile, 'r') or die("Could not access password file."); 
$user = chop(fgets($f)); 
$pass = chop(fgets($f)); 
$name = chop(fgets($f)); 
if (strlen($name) == 0) { 
    $name = 'some_db'; 
} 
fclose($f); 

$connect = mysql_pconnect("localhost", $dbuser, $dbpass) or 
     die('Could not connect: ' . mysql_error()); 

mysql_select_db($name, $connect) or die("Could not find database"); 

$id = urldecode($_GET['id']); 
$user = urldecode($_GET['user']); 

$query = "SELECT data FROM autosave_table WHERE id='$id' AND user='$user'; 
$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 

$updateQuery = ""; 
if ($num_rows == 1) { 
    //What do I put here to return a string from data? 
} 

mysql_query($updateQuery); 

?> 

ответ

2

Самый простой способ, которым я могу думать о том, чтобы просто вывести «данные» содержание Филда с последующим переводом строки (предполагающей data не будет содержать переводы строк, конечно), так что метод BufferedReader в readLine() могут быть использованы.

PHP сторона:

if ($num_rows == 1) { 
    $row = mysql_fetch_assoc($result); 
    printf("%s\n",$row['data']); 
} 

Java сторона:

BufferedReader in = new BufferedReader(new InputStreamReader(
           con.getInputStream())); 
String message = in.readLine(); 
in.close(); 

нуждается некоторые дополнительные проверки ошибок, конечно, но это суть. Вы также можете сериализовать содержимое data, например, в формате JSON или XML, и десериализовать это на стороне Java, но для того, что похоже на простой пример использования, который, вероятно, слишком переполнен.

+0

Удивительно, спасибо! – bstrong

1
InputStream inputStream = new BufferedInputStream(con.getInputStream()); 

Scanner scanner = new java.util.Scanner(inputStream); 
String response = ""; 
while (scanner.hasNextLine()) 
{ 
    response += scanner.nextLine(); 
} 

... 

Вы также должны выводить что-то в файле PHP, простой echo на заинтересованных областях будет делать это, когда он выдает ответ.