Android HTTP публикуване на много части

Здравейте, имам част от уебсайта, описана по-долу:

<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 кода на сайта, който искам, без код за успех или нещо подобно. Изглежда, че искам съдържание на сайта, но не изпращам формуляра. Някаква идея какво правя грешно?


person Mithrand1r    schedule 23.10.2012    source източник
comment
не виждам това да е проблем. вие се обаждате на уебсайт, а не на уеб услуга. резултатът от публикацията трябва да бъде удобна за потребителя html страница, а не загадъчен код за отговор. вие можете да се опитате да разберете какъв е върнатият html.   -  person njzk2    schedule 23.10.2012
comment
njzk2 значи казвате, че сървърът не обработва заявката ми правилно?   -  person Mithrand1r    schedule 23.10.2012
comment
не. Казвам, че не обработвате отговора на сървъра правилно. това е html страница, която трябва да върне, и от вас зависи да проверите дали това изглежда правилно.   -  person njzk2    schedule 23.10.2012
comment
проблемът е, че изглежда, че не публикувам (натискам бутона за изпращане), а само искам съдържание на страницата.. просто не мога да го разбера защо   -  person Mithrand1r    schedule 23.10.2012
comment
публикувате. опитайте се да получите съдържанието на резултата, запишете го в html файл и го прегледайте.   -  person njzk2    schedule 23.10.2012
comment
получавам точно същия формуляр, в който изпращах, без данни, които поставих в MultipartEntity   -  person Mithrand1r    schedule 23.10.2012
comment
предполагам, че публикувате в dodajN.html   -  person njzk2    schedule 23.10.2012
comment
всъщност няма разлика между публикуване в dodajN.html или в new и в двата случая получавам същия отговор   -  person Mithrand1r    schedule 23.10.2012


Отговори (2)


Изпращате към .html файл. Обикновено сървърите не са конфигурирани да третират тези файлове като скриптове, което означава, че данните, които изпращате, просто се игнорират и изхвърлят. За да се справите с изпращане на формуляр, трябва да подадете на скрипт или друга програма, специално предназначена да обработва това изпращане, напр. php скрипт.

person Marc B    schedule 23.10.2012
comment
всъщност това е някакъв вид блог и искам да мога да направя още един запис на клиент. Искам сайт, който изглежда като blog.jsp?action=new - person Mithrand1r; 23.10.2012
comment
тогава за какво е action="dodajN.html"? - person Marc B; 23.10.2012
comment
след теста няма разлика в моя случай, ако използвам url=someurl/blogjsp?action=new или url=someurl/blogjsp?action=dodajN.html малко съм объркан в момента - person Mithrand1r; 23.10.2012

Добре, за да изясня казаното от Марк Б: action="dodajN.html" почти сигурно е грешно. Никога не съм виждал уеб сървър, който ви позволява да правите това (разбира се, всичко е възможно). Вероятно трябва да е action="cgi-bin/something" или нещо подобно.

Всъщност обаче не е толкова важно, тъй като вашето приложение така или иначе не използва клаузата action, а по-скоро пише на "url", което е още по-грешно. Ако ни кажете точно на какъв URL адрес наистина пишете, може да помогне.

Но в крайна сметка начинът, по който отстранявате грешки, е да погледнете регистрационните файлове на сървъра и да видите какво се случва в този край.

Като общо правило, когато разработвам нещо подобно, първо пиша cgi скрипта от страна на сървъра и уеб страница, за да го използвам. След като моят API работи през уеб страницата, едва тогава започвам да се опитвам да извикам cgi скрипта от приложение за Android.

Моят процес на отстраняване на грешки се състои от: 1) Четене на регистрационните файлове на сървъра. 2) Моите cgi скриптове да пишат свои собствени журнали за отстраняване на грешки. 3) Приложението ми за android изхвърля кода на отговора и заглавките към logcat.

person Edward Falk    schedule 23.10.2012