我正在尝试发送一个PUT请求,但是在它中失败了。 只有在我第一次尝试发送数据时,以下行才会在日志中跟进(进一步使用时不会抛出任何异常):
E / DataScheduler:isDataSchedulerEnabled():false
我试图谷歌说出可能意味着什么,但没有运气。即使在发送数据的进一步尝试中,所提到的异常也不再引发,仍然没有数据被发送。我正试图在我自己的服务器上发送它,我可以看到没有收到这方面的连接。使用我的Android浏览器,我可以发送成功的GET请求。
我还通过以下方式设置了Internet权限:
<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 :(得分:0)
我怀疑params [0]和params [1]实际上是你网址的地址和端口。如果是,那么您可以参考以下帖子:
Making PUT request with JSON data using HttpURLConnection is not working
如果您开始与响应进行交互,则会发送内容,因此请添加以下内容:
System.err.println(httpCon.getResponseCode());
根据帖子,看看是否有效?