2016-04-04 77 views
0

我試圖發送一個PUT請求,但在其中失敗。 只有我第一次嘗試(沒有異常拋出在進一步使用)發送數據以下行跟進日誌中:Android發送HTTP PUT,但錯誤:isDataScedulerEnabled():False

E/DataScheduler: isDataSchedulerEnabled():false

我想谷歌退出那會是什麼可能意味着,但沒有運氣。即使是在發送數據的進一步嘗試中,所提到的異常也不會再提出,仍然沒有數據被髮送。我試圖發送它在我自己的服務器上,我可以看到沒有連接收到的一方。使用我的Android瀏覽器,我可以發送成功的GET請求。

我還設置了權限,互聯網已經由:

<uses-permission android:name="android.permission.INTERNET" /> 

我不是很熟悉Java或Android,但據我所知應該將請求形成和發送方式如下:

public void sendFilesWithPut(String address, String file) { 
    new AsyncTask<String,Void,Void>() { 
     @Override 
     protected Void doInBackground(String... params) { 
      try { 
       //Log.d("HTTP:","Address:"+params[0]+":"+params[1]+" file:"+params[2]); 
       URL url = new URL("http://" + params[0] + ":" + params[1]); 
       HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
       httpCon.setDoOutput(true); 
       httpCon.setRequestMethod("PUT"); 
       OutputStreamWriter out = new OutputStreamWriter(httpCon.getOutputStream()); 
       out.write(params[2]); 
       out.close(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
    }.execute(address, Integer.toString(port), file); 
} 

我可以打印一行日誌每次我試圖發送一個PUT請求時,它是正確的:IP,端口和將要發送的字符串。

任何想法如何使其工作?

回答

0

我懷疑params [0]和params [1]實際上是你的url的地址和端口。如果是這樣,那麼你不妨參考以下職位:

Making PUT request with JSON data using HttpURLConnection is not working

凡內容將被髮送,如果你開始與響應交互,所以添加以下內容:

System.err.println(httpCon.getResponseCode()); 

按該帖子,並看看是否有用?

+0

嗯,這小小的代碼製造了詭計!奇怪的是它並沒有在我學習代碼的例子中。無論如何,謝謝你。你已經正式保存了我的一天:) – user3622167

+0

不要提及它的朋友,很高興幫助一個同伴noob ...很難得到幫助或在這裏很好的答案,通常不得不回答我自己的問題。祝你好運! :) – partynose