我尝试将数据从我的应用Android发送到来自php文件的db mysql。
但它总是给我这个错误:
[Sat Mar 24 12:56:42.061845 2018] [php7:notice] [pid 1035] [client 192.168.1.151 :56068] PHP注意:未定义的索引:ID / in /var/www/html/Find_First.php 第18行
以下是android代码: 我用来发送的发言人
HttpURLConnection con = utilityBOperation.Connect(urlAddress);
// Log.v(TAG,"Sender/ send: valore del risultato della connessione al server"+ con);
if (con==null){
Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection è nullo : " + con);
return null;
}
try {
Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection non è nullo : " );
OutputStream os = con.getOutputStream();
// Write
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os,"UTF-8"));
bw.write(new DataPackager(Id_String,GRM_Family,GRM_Prodoct,MK_Nation,MK_Company).packData());
Log.v(TAG,"Sender: Send : Il packData è stato inviato ");
bw.flush();
// RELEASE RES
// Verifico i valori dolpo l' invio dei dati
Log.v(TAG,"Sender: Send : Il risultato del HttpURLConnection " +
"Dopo l'invio dello streaming dati : " + con);
Log.v(TAG,"Sender: Send : Il risultato del outputstreaming : " + os);
bw.close();
os.close();
//HAS IT BEEN SUCCESSFUL?
int responseCode=con.getResponseCode();
Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server è: " + responseCode);
Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server è: " + con.getResponseMessage());
Log.v(TAG,"Sender: Send : Il valore della risposta dell 'invio al server getErrorStream(): " + con.getErrorStream());
if (responseCode== HTTP_OK){
//GET EXACT RESPONSE
Log.v(TAG,"Sender: Send : Il responsecode è Http_Ok " + HTTP_OK );
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuffer response = new StringBuffer();
Log.v(TAG,"Sender: Send : Recupero il valore dello StringBUffer : " + response);
String line;
//READ LINE BY LINE
while ((line=br.readLine())!= null){
response.append(line);
}
// RELEASE RES
br.close();
String JsonData = response.toString();
JSONObject JsonOB = new JSONObject(JsonData);
JSONArray parentArray = JsonOB.getJSONArray("response");
JSONObject finalOB = parentArray.getJSONObject(0);
Log.v(TAG,"Sender: Send : Il valore del Json che ricevo : " + finalOB);
Find_Place.Rest_Data_to_Json(finalOB);
return response.toString();
}else {
Log.v(TAG,"Sender: Send : La risposta dell 'invio al server è negativa : " + responseCode);
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
- 我创建连接的类
public static HttpURLConnection Connect(String urlAddress) {
// TODO: Sono nel connect
HttpURLConnection con;
try {
Log.v(TAG, "utilityBOopreation:Connect: entrato nel connect");
URL url = new URL(urlAddress);
con = (HttpURLConnection) url.openConnection();
// set propertis
con.setRequestMethod("POST");
con.setConnectTimeout(1000);
con.setReadTimeout(2000);
// con.setRequestProperty("USER-AGENT","Mozilla/5.0");
con.setDoInput(true);
con.setDoOutput(true);
// Log.v(TAG, "utilityBOopreation:Connect: Valore della connessione : " + con);
//return con;
} catch (MalformedURLException e) {
e.printStackTrace();
Log.v(TAG, "utilityBOopreation:Connect: La connessione non è andata a buon fine : " + e);
return null;
} catch (IOException e) {
e.printStackTrace();
Log.v(TAG, "utilityBOopreation:Connect: La connessione non è andata a buon fine : " + e);
return null;
}
return con;
我创建mo json的类
public String packData(){
Log.v(TAG,"DataPackager:packData: Entro nel packData");
JSONObject jo= new JSONObject();
StringBuffer packedData =new StringBuffer();
try {
jo.put("ID",Id);
jo.put("GRM",GRM);
/ .
altri campi
./
Boolean FirstValue=true;
Iterator it=jo.keys();
Log.v(TAG,"DataPackager:packData: Creo il mio file Json ... " + jo);
do {
String Key=it.next().toString();
String value=jo.get(Key).toString();
if (FirstValue){
FirstValue=false;
}else {
packedData.append("&");
}
packedData.append(URLEncoder.encode(Key,"UTF-8"));
packedData.append("=");
packedData.append(URLEncoder.encode(value,"UTF-8"));
}while (it.hasNext());
Log.v(TAG,"DataPackager:packData: Il packData Prima di mandarlo via stream ... " + packedData);
return packedData.toString();
} catch (JSONException | UnsupportedEncodingException e) {
e.printStackTrace();
Log.v(TAG,"DataPackager:packData:non sono riuscito a creare il json ... " + e.getMessage());
}
return null;
}
这是服务器上的php文件,只有POST的接收部分
$host = 'localhost';
$username = 'user';
$pwd = '';
$db = 'mioDB';
if (isset($_POST)){
$ID = $_POST['ID'];
$GRM = $_POST['GRM'];
/
altri valori
/
$response = array();
$connect = mysqli_connect($host,$username,$pwd,$db) or die ('Unabletp connect');
答案 0 :(得分:0)
正如你在json收到的数据。他们不会使用POST
进行重试。您必须使用file_get_contents("php://input")
;
$data_json = file_get_contents("php://input");
$data = json_decode($data_json,true);
然后执行以下操作
$ID = $data['ID'];
$GRM = $data['GRM'];