2012-01-27 19 views
1

EDIT:これは私のウェブサイトのログに表示されています xx.xx.xxx.xx - [27/Jan/2012:17:42:24 -0500] "POST/dir /addData2.php HTTP/1.1" 200 - www.mywebsites.com " - " の "Java/1.7.0" " - "PHPがJavaからのPOSTリクエストを受け取りました

私は1 & 1で私のウェブサイトをホスティングしている、と私はそのページblank.phpを持ちたいですPOSTリクエストを取得してデータベースにアップロードする必要があります。私はPOSTを正しく送信していると思っています。それはどういうわけか私のウェブサイトで正しく処理されていません。私のデータベースには何も挿入されていないからです。レスポンスの内容の長さは0ですが、文字列の長さのヘッダーを送信しても、変更されることはありません。もう1つの選択肢は、ホストが遠隔の投稿リクエストを行うことを許可しないということです(まだ返信待ちです)。

私はこのようなJavaアプリケーションからのPOSTリクエストを送信します。

URL url = new URL("www.mywebsite.com/blank.php");  
HttpURLConnection request = (HttpURLConnection)url.openConnection(); 
request.setRequestProperty("Content-type","application/x-www-form-urlencoded"); 
request.setRequestMethod("POST"); 
OutputStreamWriter post = new OutputStreamWriter(request.getOutputStream()); 
String data = URLEncoder.encode("account", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8"); 
data += "&" + URLEncoder.encode("message", "UTF-8") + "=" + URLEncoder.encode(message[2], "UTF-8"); 
data += "&" + URLEncoder.encode("type", "UTF-8") + "=" + URLEncoder.encode(message[0], "UTF-8"); 
post.write(data); 
post.flush(); 
/* 
/String example 
/account=103&message=Feller+1391.88+0&type=103 
*/ 

サーバーからの応答は次のとおりです。

null=[HTTP/1.1 200 OK] 
Date=[Fri, 27 Jan 2012 21:59:10 GMT] 
Content-Length=[0] 
Keep-Alive=[timeout=2, max=200] 
Connection=[Keep-Alive] 
Content-Type=[text/html] 
Server=[Apache] 
X-Powered-By=[PHP/5.2.17] 

私のWebページには、今(この基本的なPHPコードを持って改善されます/後でチェックする)

$link = mysql_connect($hostname, $username, $password); 
$db_selected = mysql_select_db($database, $link); 
$query = "INSERT INTO newData(account, message, type) VALUES('$_POST[account]', '$_POST[message]', '$_POST[type]')"; 
mysql_query($query) || die(); 

私はプライベートサーバーを持っていないことを指摘したいと思います。おそらくhttp://hc.apache.org/httpcomponents-core-ga/examples.htmlを使用します。今すぐJavaアプリケーションから文字列を送り、PHPで受け取ってMySQLデータベースに挿入したいだけです。

+0

あなたの質問は曖昧です。あなたの具体的な問題/質問は何ですか?レスポンスの内容の長さは0ですか?しかし、あなたは応答に書き込むPHPコードを表示していませんか? – BalusC

+0

さて、私の質問は私のコードとコードの例をすべて比較していますが、私のデータベースには何も挿入されていません。レスポンスへの書き込みによってあなたが何を意味するかわからないここで私の考えは、一方向のコミュニケーション、サーバーへのアプリケーション(自動応答を送信するが、私はそれに返信しなければならないと思った)である。私自身のサーバー(共有ホスティング)ではないので、私自身の応答を書くことができません – Juan

+0

ログを見るために可能な限りすべてを行ってください。 Webサイトのトラブルシューティングには、ログへのアクセスが不可欠*です。 – paulsm4

答えて

1

これはPOSTリクエストであることをクライアントコードに伝えていません。おそらく、デフォルトではGETを行うでしょう。

+0

私の最初の推測でした。 OPは "setRequestMethod(" POST ")"と言っていましたが、これは元の投稿にあったのかもしれない、それは後の編集だったかもしれませんが、私は知らないです。すべての基本 " - ログを確認し、PHPを検証して、mysqLを検証し、PHP変数を確認してください... IMHO ... – paulsm4

+0

それはその後の編集でした(変更を見るには"編集済みX分前 "をクリックしてください)。 – DNA

2

はい、あなたのISPは、「投稿」と「取得」HTTPサーバー要求の両方を許可していると思います。

表面的には、JavaとPHPの両方が「OK」のように見えます。

STRONG提案:

1)サーバー上のApacheのログを確認してください。

リクエストが到着したことを確認してください(おそらくそうでした)。エラーの

チェック(そこだけでなく、あなたの要求のために何もすることができなかった - 。しかし、あなたがApacheのエラーログに表示されるはずです

2)PHPが動作していることを確認します。

"hello world"ページに "phpinfo();"を書き込むこれを行うには良い方法です。

3)MySQLが機能していることを確認します。

1)接続する、2)クエリを作成する、3)Webブラウザでクエリを返すことができることを確認する「hello world」PHPページの作成が理想的です。

4)クライアントから受け取っていると思われる「$ _POST [account]」の値を正常に読み取ることができることを確認します。

5)その時点で、あなたはできるはずですへ:

a)は、サーバー

B)と通信POSTリクエストを読み、自分のデータベースに書き込むクライアントを持って

"ホープはそれを助けます..あなたが持っているかもしれない特定の質問/問題を投稿してください。

+0

PS: "|| die()"でMySQLクエリを修正し、エラーメッセージをエコーし​​ます。しかし、*基本的なことを確認してください。まず、Apacheのログ、PHP、MySqlConnectivity、PHPの変数です。 – paulsm4

+0

悲しいことに、1&1はApacheのエラーログを見ることはできませんが、http://faq.1and1.com/miscellaneous/14.html(これまでのエントリはありません)があります。私はフォーム、メソッド投稿、同じPHPコードを持つ別のWebページを持っています。フォームを使用して、データベースに要素を挿入できます。私は私のJavaアプリケーションから文字列をコピーして挿入します。 (私は可能な限りシンプルにするためにmysqlとPHPコードを変更してエコーするか、些細なことをする必要はありませんでした) – Juan

+0

私が送るエラーリンクは今のところですが、 '$ _POST [account]'最初に設定することなくアクセスできます。 (テストバージョンでは実際のバージョンで修正されました)私はisset( '$ _ POST [アカウント]')を追加しました(再度表示されません) – Juan

1

HttpUrlConnectionでリクエストメソッドを設定していないようですが、デフォルトはGETです。それでも解決しない場合はあなたが

request.setRequestMethod("POST"); 

ようなものが必要だろう、私はJavaの標準のHTTPクライアントAPIを使用するよりeasiertだ、すぐに始めからのApache HTTPクライアントを使用して、むしろ検討したいです。

+0

コードをコピーするときに、間違ってその行を削除しました(コードはもう少し長く、短くしておきたい)。 – Juan

関連する問題