java - 在 Android 上将请求发布到 .php 文件
问题描述
我正在尝试从我的 android 应用程序向.php
文件发出 POST 请求,但它不起作用。它应该将scannedData
值发送到我的.php
脚本,但它会返回"false: 500"
.
有人知道为什么吗?由于他们改变了你不能再使用httppost
StackOverflow 上的大多数答案已经过时了。
public class SendRequest extends AsyncTask<String, Void, String> {
protected void onPreExecute(){}
protected String doInBackground(String... arg0) {
try{
//Enter script URL Here
URL url = new URL("https://example.com/code.php");
JSONObject postDataParams = new JSONObject();
//int i;
//for(i=1;i<=70;i++)
// String usn = Integer.toString(i);
//Passing scanned code as parameter
postDataParams.put("sdata",scannedData);
Log.e("params",postDataParams.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode=conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
}
else {
return new String("false : "+responseCode);
}
}
catch(Exception e){
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(), result,
Toast.LENGTH_LONG).show();
}
}
public String getPostDataString(JSONObject params) throws Exception {
StringBuilder result = new StringBuilder();
boolean first = true;
Iterator<String> itr = params.keys();
while(itr.hasNext()){
String key= itr.next();
Object value = params.get(key);
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(key, "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(value.toString(), "UTF-8"));
}
return result.toString();
}
解决方案
推荐阅读
- php - 如何删除 UTF-32 字符?
- arrays - 将 firebase 中多个字典的值添加到 Int
- regex - 在powershell中将正则表达式捕获组的结果更改为小写
- api - 使用 webhook 在不和谐服务器上创建频道
- javascript - 无法读取未定义的属性“地图”。错误还原
- java - 如何在 Java 中制作应用程序图标进度指示器?
- apache-kafka - 使用 Kafka Connect 时如何转换所有时间戳字段?
- python-3.x - 如何用python求解线性方程组
- class - 如果参数编译时间不是实际类型,kotlin 的 javaclass.isPrimitive 会失败
- postgresql - 如何在没有 TLS 客户端身份验证的情况下通过 SSL 连接到 Google Cloud SQL?