我目前正在尝试编写一个Android应用程序,它只需按下按钮即可将数据发送到服务器。
我已经按照这里的其他帖子尝试让这个工作,但它不想打球。我似乎只是在努力与Android Studio和java语言搏斗,这是一种耻辱,因为我想要喜欢java。在其他语言中发布是如此简单。
当我启动Wireshark并按下应用程序上的按钮时,虽然没有应用程序层数据,但我可以看到端口80上的数据包通过。
请参阅下面我的httpHelper类的代码。它基本上改编自完整参考书(第9版)中提供的示例(用于GET请求),然后根据我从Stack Overflow收集的信息进行POST调整:
public class httpHelper {
String url;
public httpHelper(String hturl){
url = hturl;
}
//Literally no idea why this isn't working.
void postData(String qString) throws Exception{
URL hp = new URL(url);
HttpURLConnection hpCon = (HttpURLConnection) hp.openConnection();
hpCon.setDoOutput(true);
hpCon.setRequestMethod("POST");
hpCon.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded");
hpCon.setRequestProperty( "charset", "utf-8");
hpCon.setDoInput(true);
hpCon.setUseCaches(false);
byte[] postString = qString.getBytes(Charset.forName("UTF-8"));
hpCon.setRequestProperty("Content-Length", Integer.toString(postString.length));
try{
DataOutputStream wr = new DataOutputStream( hpCon.getOutputStream());
wr.write(postString);
}catch(Exception e){
e.printStackTrace();
}
}}