0

こんにちは、私は以下のように説明されているウェブサイトの部分を持っています:

<div id="insertA">
    <form class="MultiFile-intercepted" enctype="multipart/form-data"
        method="post" onsubmit="return checkAnomalyFields();"
        action="dodajN.html">
        <table style="border-weight: 0px">
            <tbody>
                <tr>
                <tr>
                    <td id="wybory"><select id="typ" onchange="typeSelected()" size="1"
                        name="typuId">
                    </td>
                    <td>
                </tr>
                <tr>
                    <td>Szerokość: <input id="szer" type="text" onchange="setMarker()"
                        value="" name="szer">
                        <div id="szerErr" class="err">Proszę podać szerokość na terenie
                            Polski (49-55).</div>
                    </td>
                    <td>Długość: <input id="dlug" type="text" onchange="setMarker()"
                        value="" name="dlug">
                        <div id="dlugErr" class="err">Proszę podać długość na terenie
                            Polski (14-25).</div> <input id="id" type="hidden" value=""
                        name="id">
                    </td>
                </tr>

クライアントからデータを送信してフォームに入力するためのHTTPPOSTリクエストを作成したいと思います。私はこれを次のように行っています:

try {
    HttpClient client = new MyHttpClient(Send.this);  
    String postURL = "url";
    HttpPost post = new HttpPost(postURL); 
    //FileBody bin = new FileBody(file);
    MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);  
    //reqEntity.addPart("myFile", bin);
    reqEntity.addPart("typuId", new StringBody("1"));
    reqEntity.addPart("statusuId", new StringBody("2"));
    reqEntity.addPart("szer", new StringBody("52.321911"));
    reqEntity.addPart("dlug", new StringBody("19.464111000000003"));
    reqEntity.addPart("opis",  new StringBody("jakis opis"));

    post.setEntity(reqEntity);  
    HttpResponse response = client.execute(post);  
    HttpEntity resEntity = response.getEntity();  
    AlertDialog.Builder alert=new AlertDialog.Builder(Send.this);
    alert.setTitle("Niepoprawne dane").setMessage(EntityUtils.toString(resEntity)).setNeutralButton("OK", null).show();

    if (resEntity != null) {    
        Log.i("RESPONSE",EntityUtils.toString(resEntity));
    }
} catch (Exception e) {
    e.printStackTrace();
}

問題は、応答を読んだときに、成功コードなどがなくても、要求しているサイトのHTMLコードを取得することです。サイトのコンテンツをリクエストしているようですが、フォームを送信していません。私が間違っていることについて何か考えはありますか?

4

2 に答える 2

3

ファイルに送信してい.htmlます。通常、サーバーはこれらのファイルをスクリプトとして扱うように構成されていません。つまり、送信するデータは単に無視されてダンプされます。フォームの送信を処理するには、その送信を処理するために特別に設計されたスクリプトまたはその他のプログラム(phpスクリプトなど)に送信する必要があります。

于 2012-10-23T14:31:54.860 に答える
0

OK、マークBが言ったことを明確にするために:action="dodajN.html"ほぼ間違いなく間違っています。これを可能にするWebサーバーを見たことがありません(もちろん、何でも可能です)。それはおそらくaction="cgi-bin/something"そのようなものでなければなりません。

ただし、アプリはactionとにかく句を使用しておらず、「url」に書き込むので、実際にはそれほど重要ではありません。これはさらに間違っています。実際に書き込んでいるURLを正確に教えていただければ、役立つかもしれません。

しかし、最終的には、これをデバッグする方法は、サーバーログを調べて、その最後に何が起こっているかを確認することです。

原則として、このようなものを開発するときは、まずサーバー側のcgiスクリプトとそれを使用するWebページを作成します。APIがWebページで機能するようになったら、Androidアプリからcgiスクリプトを呼び出そうとします。

私のデバッグプロセスは次のとおりです。1)サーバーログの読み取り。2)cgiスクリプトに独自のデバッグログを書き込んでもらいます。3)Androidアプリに応答コードとヘッダーをlogcatにダンプさせます。

于 2012-10-23T19:38:35.160 に答える