2016-01-24 62 views
-2

我試圖用libGDX寫一點代碼來處理網絡。這裏是一個代碼:Gdx.net.sendHttpRequest中的NullPointerException

public class Test { 

public static void main(String[] args) { 
    String accessToken = "********"; //a set of symbols, not important because it is specific of request target 
    String userID = "*********"; //also not important 
    String message = "Hello World"; 
    String uri = "method/wall.post?owner_id=" + userID + "&message=" + message + "&access_token=" + accessToken; 
    HttpRequestBuilder requestBuilder = new HttpRequestBuilder(); 
    HttpRequest httpRequest = requestBuilder.newRequest().method(HttpMethods.GET).url("https://api.vk.com/").content(uri).build(); 
    Gdx.net.sendHttpRequest(httpRequest, //Here Eclipse shows NullPointerException 
      null); //But not here 
} 

如果我在瀏覽器中寫這個URL,它的工作原理是正確的。這意味着,這個問題在我身邊。如何解決它?

導致NullPointerException異常對象的值的總結:

debugger screenshot

+1

你能發佈你的stacktrace嗎?有沒有給出「空」參數 – pL4Gu33

+0

您是否使用過調試器? – Idos

+2

可能重複[什麼是空指針異常,以及如何解決它?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do -i-fix-it) –

回答

1

你在你的程序的靜態主入口點編寫這些代碼。您的Gdx尚未加載,因此Gdx在此時仍然爲空。

創建一個無靜態類,並將其代碼放入其構造函數中,並在該靜態入口點中初始化該類。

public class WebTest() 
{ 
    public WebTest() 
    { 
    String accessToken = "********"; //a set of symbols, not important because it is specific of request target 
    String userID = "*********"; //also not important 
    String message = "Hello World"; 
    String uri = "method/wall.post?owner_id=" + userID + "&message=" + message + "&access_token=" + accessToken; 
    HttpRequestBuilder requestBuilder = new HttpRequestBuilder(); 
    HttpRequest httpRequest = requestBuilder.newRequest().method(HttpMethods.GET).url("https://api.vk.com/").content(uri).build(); 
    Gdx.net.sendHttpRequest(httpRequest, //Here Eclipse shows NullPointerException 
      null); //But not here 
    } 
} 

public class Test {  
    public static void main(String[] args) { 
    new WebTest(); 
    } 
} 
+0

沒有效果。我剛剛複製了你的代碼,但仍然存在NPException。 –

+0

那麼確切的是'空'?我一定會猜測它是沒有堆棧跟蹤的'Gdx'。你確定你的項目設置是否正確,因爲你甚至不應該在'LibGDX'項目的'static main(String [] args){...}'的入口點進行編碼,但是在覈心模塊中, GameName擴展了ApplicationListener/Game'。 – Madmenyo