2016-06-28 60 views
-1

這個簡單的post方法沒有向服務器(servlet)發送任何東西。我可以得到,但我不能發佈!Servlet收到的OutputStream爲空

@Override 
     protected String doInBackground(String... params) { 
      try { 
       URL url = new URL("http://ipaddr:8080/work/wh"); 
       HttpURLConnection client = (HttpURLConnection) url.openConnection(); 
       client.setRequestMethod("POST"); 
       client.setDoOutput(true); 
       client.setChunkedStreamingMode(0); 
       client.connect(); 

       OutputStream outputStream = client.getOutputStream(); 
       PrintWriter pw = new PrintWriter(outputStream); 
       pw.println(System.currentTimeMillis()); 
       pw.println(System.currentTimeMillis()); 
       pw.println(new Float(5.6)); 
       pw.println(new Integer(3)); 
       pw.println(new Integer(2)); 
       pw.println(new Integer(32)); 
       pw.println(new Integer(2)); 
       pw.close(); 
       outputStream.close(); 

      }catch(Exception e){ 
       Log.e("text", "ux " + e.getMessage()); 
      } 
      return null; 
     } 

在服務器端,如果我試圖讀取任何行new Scanner(request.getInputStream()).nextLine();我得到

NoSuchElementException異常:未找到行

你覺得可能是這個問題?

+0

'NoSuchElementException'不是'void'。 – EJP

+0

我的意思是我得到無效的對象inputsteam沒有數據 – Error

+0

代碼不是MCVE格式,原因在目前提供的信息中是不可見的,所以我們只能給出有教育意義的猜測。您是否知道請求主體在被服務器事先(已隱式地)解析時會爲空?例如。調用'request.getParameter()'會導致它立即被解析。儘管如此,爲什麼不按照HTML表單使用的默認'application/x-www-form-urlencoded'格式,並且由servlet API本地支持?另請參閱http://stackoverflow.com/q/2793150 – BalusC

回答

-1

嘗試在關閉PrintWritter/Outputstream之前關閉它們。

+0

你甚至知道flush是幹什麼的嗎 - – Error

+0

是否強制任何緩衝的輸出字節被寫出。 –

+1

關閉已經調用flush() – Error