Manchmal handelt es sich bei den von einigen Anforderungen übermittelten Daten nicht um den gemeinsamen Parameternamen: Das Schlüssel-Wert-Paar der Parameterwert-Zuordnungsbeziehung. Beispielsweise handelt es sich bei den vom öffentlichen WeChat-Plattformserver an die vom Entwickler angegebenen URL übermittelten Daten um eine XML-Datei Die Zeichenfolge kann derzeit weder über request.getParameter("Parametername") von PHP noch über $_POST['Parametername'] von PHP abgerufen werden. Für diese Art von Daten lautet die Lösung wie folgt:
request.setCharacterEncoding("utf-8"); StringBuilder buffer = new StringBuilder(); java.io.BufferedReader reader=null; try{ /** * getReader() * Retrieves the body of the request as character data using a BufferedReader * getInputStream() * Retrieves the body of the request as binary data using a ServletInputStream. */ reader = request.getReader(); String line=null; while((line = reader.readLine())!=null){ buffer.append(line); } }catch(java.io.IOException e){ e.printStackTrace(); }finally{ if(null!=reader){ try { reader.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } } String res = buffer.toString(); System.out.print(res);
Zusätzliche Hinweise: getReader() und getInputStream() können nur einmal auf Anfrage aufgerufen werden und können nicht gleichzeitig aufgerufen werden.
PHP-Code
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
Zusätzliche Erklärung:
HTML aus dem Enctype-Attribut gibt an, wie Formulardaten codiert werden, bevor sie an den Server gesendet werden Der Standardwert ist „application/x-www-form-urlencoded“.
application/x-www-form-urlencoded kodiert die übertragenen Daten in Form von Schlüssel-Wert-Paaren. Das Backend kann
text/plain direkt über request.getParameter() abrufen. Die Daten werden als Klartext ohne Steuerelemente oder Formatierungszeichen codiert.
multipart/form-data, die übertragenen Daten müssen das Multimedia-Übertragungsprotokoll verwenden. Da Multimedia eine große Datenmenge überträgt, ist festgelegt, dass die hochgeladene Datei die Post-Methode sein muss.
Beim Hochladen von Dateien sollte der verwendete Kodierungstyp „multipart/form-data“ sein, der Textdaten senden kann und auch das Hochladen von Binärdaten unterstützt.