2017-01-20 37 views
1

我正在開發一個迷你項目(REST應用程序),我需要將json數據從java發佈到php並顯示出來。但是,即使在過去兩天嘗試之後,我仍然無法完成此任務。所以我做了一個單獨的文件來測試它是如何工作的。我如何查看Web瀏覽器中的後json數據?

以下是我的.java文件我在NetBeans中運行

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 

public class NewClass { 
public static void main(String[] args) { 
String json = "{\"message\":\"This is a message\"}"; 

HttpClient httpClient = new DefaultHttpClient(); 
try { 
     HttpPost request = new HttpPost("http://localhost/test/somesite.php"); 
     StringEntity params =new StringEntity("message=" + json); 
     request.addHeader("content-type", "application/x-www-form-urlencoded"); 
     request.setEntity(params); 
     HttpResponse response = httpClient.execute(request); 
     // handle response here... 
     System.out.println(EntityUtils.toString(response.getEntity())); 
     EntityUtils.consume(response.getEntity()); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } finally { 
     httpClient.getConnectionManager().shutdown(); 
    } 
} 
} 

以下是我.PHP(somesite.php)文件,該文件是在* C:\ XAMPP \ htdocs中\測試*。我使用xampp。

<?php 
if(isset($_POST["message"]) && !empty($_POST["message"])) 
{ 
    print_r($_POST); 
    $json_string = $_POST["message"]; 
    $json = json_decode($json_string); 
    print_r($json); 
} 
?> 

當我在NetBeans中運行的.java文件我得到以下output window

但是,當我刷新我.PHP頁面在瀏覽器中我什麼也沒得到,我得到一個blank page 如何我是否可以獲取從我的.java發佈到我的.php以在瀏覽器中顯示的json數據?

任何幫助表示讚賞,我是json和php的新手。謝謝。

+1

你確定這是一個空白頁面,而不是一個錯誤頁面?檢查您的錯誤日誌,並檢查瀏覽器控制檯。嘗試回顯一些細節('var_dump($ _ POST);'在你的isset之前) – aynber

回答

1

這是按預期工作。

當您在瀏覽器中訪問GET請求的頁面時,由於您檢查的是空的/未設置的POST,應該什麼也不顯示。

同樣的Java請求時,它使頁面爲POST請求,並且看到PHP的print_r在控制檯因此=>stdClass輸出。

要在瀏覽器中看到此內容,您需要提出從PHP到Java的服務請求。您目前正在嘗試從java中推送,然後在瀏覽器中查看它是不可能的。本質上你的代碼是向後的。

PHP有curl支持提出請求,或者您可以使用非常流行的GuzzleHTTP庫。

+0

謝謝你的有用答案,你能指點我一個方向,在那裏我可以學習使用_curl_來請求可能的一些例子或演示。 – panarama

+0

這是很容易在谷歌https://www.google.com/search?q=Using+curl+to+access+API&oq=Using+curl+to+access+API&aqs=chrome..69i57.10416j0j7&sourceid=鉻&即= UTF-8。我會建議GuzzleHTTP認爲捲曲可以是一種痛苦。 – nerdlyist

相關問題