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>

我想发出一个 HTTP POST 请求以从我的客户端发送数据并将其放入表单中。我这样做如下:

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

好的,澄清一下 Marc B 所说的:action="dodajN.html"几乎可以肯定是错误的。我从未见过可以让您执行此操作的 Web 服务器(当然,一切皆有可能)。它可能应该是action="cgi-bin/something"或类似的东西。

然而,它实际上并不那么重要,因为您的应用程序并没有使用该action子句,而是写入“url”,这更加错误。如果您能准确地告诉我们您真正要写入的网址,它可能会有所帮助。

但最终,您调试的方式是查看服务器日志并查看最后发生的情况。

作为一般规则,当我开发这样的东西时,我首先编写服务器端 cgi 脚本和一个网页来使用它。一旦我的 API 通过网页工作,我才开始尝试从 Android 应用程序调用 cgi 脚本。

我的调试过程包括: 1)读取服务器日志。2) 让我的 cgi 脚本编写自己的调试日志。3) 让我的 android 应用程序将响应代码和标头转储到 logcat。

于 2012-10-23T19:38:35.160 回答