发送从申请POST请求 [英] Send Post Request from application

查看:308
本文介绍了发送从申请POST请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Android应用程序的布局。

我在布局的EditText领域。
用户会写城市和地址,在那里。

我需要发送POST请求的服务器使用此信息。

想看到默认的工具和使用RestSharp变种。

为什么能写入POST请求在此字段中输入哪些用户。

AXML文件:

\r
\r

<的LinearLayout\r
                机器人:方向=垂直\r
                安卓了minWidth =25像素\r
                安卓了minHeight =25像素\r
                机器人:layout_width =match_parent\r
                机器人:layout_height =226.7dp\r
                机器人:ID =@ + ID / parentContainer2\r
                机器人:背景=#99000000\r
                机器人:可点击=真\r
                机器人:可聚焦=真\r
                机器人:focusableInTouchMode =真正的>\r
                <的TextView\r
                    机器人:文字=АДРЕСДОСТАВКИ\r
                    机器人:textAppearance =机器人:ATTR / textAppearanceMedium\r
                    机器人:layout_width =match_parent\r
                    机器人:layout_height =43.8dp\r
                    机器人:ID =@ + ID / clicklistener1\r
                    机器人:TEXTSIZE =22sp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=CENTER_HORIZONTAL\r
                    机器人:paddingTop =7DP\r
                    机器人:可聚焦=真\r
                    机器人:focusableInTouchMode =真/>\r
                <的EditText\r
                    机器人:ID =@ + ID /米斯托\r
                    机器人:layout_width =333.9dp\r
                    机器人:layout_height =44.3dp\r
                    机器人:提示=Вашгород\r
                    安卓的inputType =TEXT\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp/>\r
                <的EditText\r
                    机器人:ID =@ + ID / vulitsa\r
                    机器人:layout_width =333.9dp\r
                    机器人:layout_height =44.3dp\r
                    安卓的inputType =TEXT\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp\r
                    机器人:layout_marginTop =14.4dp\r
                    机器人:提示=Вашаулица/>\r
                <的LinearLayout\r
                    机器人:方向=横向\r
                    安卓了minWidth =25像素\r
                    安卓了minHeight =25像素\r
                    机器人:layout_width =match_parent\r
                    机器人:layout_height =58.0dp\r
                    机器人:ID =@ + ID / linearLayout16\r
                    机器人:layout_marginTop =12.0dp>\r
                    <的EditText\r
                        机器人:ID =@ + ID / budinok\r
                        机器人:layout_width =153.6dp\r
                        机器人:layout_height =44.3dp\r
                        安卓的inputType =TEXT\r
                        机器人:背景=#1a1a1a\r
                        机器人:layout_marginLeft =14.4dp\r
                        机器人:文字颜色=#FFFFFFFF\r
                        机器人:重力=左\r
                        机器人:paddingTop =10dp\r
                        机器人:paddingLeft =20dp\r
                        机器人:layout_marginTop =14.4dp\r
                        机器人:提示=Дом/>\r
                    <的EditText\r
                        机器人:ID =@ + ID / kvartira\r
                        机器人:layout_width =167.7dp\r
                        机器人:layout_height =44.3dp\r
                        安卓的inputType =数字\r
                        机器人:背景=#1a1a1a\r
                        机器人:layout_marginLeft =14.4dp\r
                        机器人:文字颜色=#FFFFFFFF\r
                        机器人:重力=左\r
                        机器人:paddingTop =10dp\r
                        机器人:paddingLeft =20dp\r
                        机器人:layout_marginTop =14.4dp\r
                        机器人:提示=Квартира/>\r
                < / LinearLayout中>\r
            < / LinearLayout中>\r
            <的LinearLayout\r
                机器人:方向=垂直\r
                安卓了minWidth =25像素\r
                安卓了minHeight =25像素\r
                机器人:layout_width =match_parent\r
                机器人:layout_height =226.7dp\r
                机器人:ID =@ + ID / linearLayout15\r
                机器人:背景=#77777777>\r
                <的TextView\r
                    机器人:文字=КОНТАКТЫ\r
                    机器人:textAppearance =机器人:ATTR / textAppearanceMedium\r
                    机器人:layout_width =match_parent\r
                    机器人:layout_height =43.8dp\r
                    机器人:ID =@ + ID / clicklistener2\r
                    机器人:TEXTSIZE =22sp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=CENTER_HORIZONTAL\r
                    机器人:paddingTop =7DP/>\r
                <的EditText\r
                    机器人:ID =@ + ID / imya\r
                    机器人:layout_width =333.9dp\r
                    机器人:layout_height =44.3dp\r
                    机器人:提示=Имя\r
                    安卓的inputType =TEXT\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp/>\r
                <的EditText\r
                    机器人:ID =@ + ID /福美来\r
                    机器人:layout_width =336.4dp\r
                    机器人:layout_height =44.3dp\r
                    安卓的inputType =TEXT\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp\r
                    机器人:layout_marginTop =14.4dp\r
                    机器人:提示=Фамилия/>\r
                <的EditText\r
                    机器人:ID =@ + ID /电话\r
                    机器人:layout_width =336.4dp\r
                    机器人:layout_height =44.3dp\r
                    安卓的inputType =数字\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp\r
                    机器人:layout_marginTop =14.4dp\r
                    机器人:提示=Номертелефона/>\r
            < / LinearLayout中>\r
            <的LinearLayout\r
                机器人:方向=垂直\r
                安卓了minWidth =25像素\r
                安卓了minHeight =25像素\r
                机器人:layout_width =match_parent\r
                机器人:layout_height =226.7dp\r
                机器人:ID =@ + ID / linearLayout15\r
                机器人:背景=#99000000>\r
                <的TextView\r
                    机器人:文字=ВАШКОММЕНТАРИЙ\r
                    机器人:textAppearance =机器人:ATTR / textAppearanceMedium\r
                    机器人:layout_width =match_parent\r
                    机器人:layout_height =43.8dp\r
                    机器人:ID =@ + ID / clicklistener3\r
                    机器人:TEXTSIZE =22sp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=CENTER_HORIZONTAL\r
                    机器人:paddingTop =7DP/>\r
                <的EditText\r
                    机器人:ID =@ + ID /注释\r
                    机器人:layout_width =333.9dp\r
                    机器人:layout_height =165.5dp\r
                    安卓的inputType =TEXT\r
                    机器人:背景=#1a1a1a\r
                    机器人:layout_marginLeft =14.4dp\r
                    机器人:文字颜色=#FFFFFFFF\r
                    机器人:重力=左\r
                    机器人:paddingTop =10dp\r
                    机器人:paddingLeft =20dp/>\r
            < / LinearLayout中>

\r

\r
\r

这是字符串,我需要通过POST请求发送:

\r
\r

\r
   <令\r
    CallConfirm ={} CallConfirm\r
    PayMethod ={} PayMethod\r
    QtyPerson ={} QtyPerson\r
    类型={类型}\r
    PayStateID ={} PayStateID\r
    备注={}备注\r
    RemarkMoney ={} RemarkMoney\r
    时间规划={}间规划\r
    品牌={}品牌\r
    DiscountPercent ={} DiscountPercent\r
    BONUSAMOUNT ={} BONUSAMOUNT\r
    部={}系\r
   >\r
       <客户登录={}登录FIO ={} FIO/>\r
       <地址\r
      CITYNAME ={} CITYNAME\r
      工作站名称={}工作站名称\r
      StreetName ={} StreetName\r
      众议院={}屋\r
      语料库={}语料库\r
      大厦={}建设\r
      平={}平\r
      门廊={}门廊\r
      地板={}楼\r
      门code ={门code}\r
     />\r
     \r
       <电话code ={电话code}号码={}号/>\r
       <产品>\r
      {}产品\r
       < /产品>\r
   < /排序>

\r

\r
\r


解决方案

  

编辑:这是不是一个XAMARIN答案,这是一个纯JAVA ANDROID



我用这个静态方法:

 私有静态字符串performPostCall(字符串requestURL,地图<字符串,字符串> postDataParams){
    URL网址;
    串响应=;
    尝试{
        URL =新的URL(requestURL);        HttpURLConnection的康恩=(HttpURLConnection类)url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod(POST);
        conn.setDoInput(真);
        conn.setDoOutput(真);
        OutputStream的OS = conn.getOutputStream();
        但是BufferedWriter作家=新的BufferedWriter(
                新OutputStreamWriter(OS,UTF-8));
        writer.write(getPostDataString(postDataParams));        writer.flush();
        writer.close();
        os.close();
        INT响应code = conn.getResponse code();        如果(响应code == HttpsURLConnection.HTTP_OK){
            串线;
            BR的BufferedReader =新的BufferedReader(新的InputStreamReader(conn.getInputStream()));
            而((行= br.readLine())!= NULL){
                响应+ =行;
            }
        }
        其他{
            响应=;
            // TODO添加不同的响应code(如HttpURLConnection.HTTP_NOT_FOUND(404),或错误500)
        }
    }赶上(例外五){
        e.printStackTrace();
    }    返回响应;
}

与getPostDataString方法:

 私有静态字符串getPostDataString(地图<字符串,字符串> PARAMS)抛出UnsupportedEncodingException {
    StringBuilder的结果=新的StringBuilder();
    布尔第一= TRUE;
    对于(Map.Entry的<字符串,字符串>项:params.entrySet()){
        //兴农上pourrait自由放任
        //result=result.replaceFirst(\"&,);
        如果(第一)
            第一= FALSE;
        其他
            result.append(与&);        result.append(URLEn coder.en code(entry.getKey(),UTF-8));
        result.append(=);
        result.append(URLEn coder.en code(entry.getValue(),UTF-8));
    }    返回result.toString();
}

postDataParams是会后的数据传递的地图。

然后,您可以将其与你的整个订单的字符串设定为一个键,也可以设置所有的密钥和您的服务器上管理它们。

希望它帮助。

修改

忘了说,这是一个独立的线程中使用时,请采用的AsyncTask

I have android app layout.

I have EditText fields in my Layout. User will write City and Adress there.

I need to send Post request to server with this information.

Want to see variants with default tools and using RestSharp.

How can I write to Post request what user enter in this fields.

Axml file:

   <LinearLayout
                android:orientation="vertical"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="match_parent"
                android:layout_height="226.7dp"
                android:id="@+id/parentContainer2"
                android:background="#99000000"
                android:clickable="true"
                android:focusable="true"
                android:focusableInTouchMode="true">
                <TextView
                    android:text="АДРЕС ДОСТАВКИ"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:layout_width="match_parent"
                    android:layout_height="43.8dp"
                    android:id="@+id/clicklistener1"
                    android:textSize="22sp"
                    android:textColor="#ffffffff"
                    android:gravity="center_horizontal"
                    android:paddingTop="7dp"
                    android:focusable="true"
                    android:focusableInTouchMode="true" />
                <EditText
                    android:id="@+id/misto"
                    android:layout_width="333.9dp"
                    android:layout_height="44.3dp"
                    android:hint="Ваш город"
                    android:inputType="text"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp" />
                <EditText
                    android:id="@+id/vulitsa"
                    android:layout_width="333.9dp"
                    android:layout_height="44.3dp"
                    android:inputType="text"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp"
                    android:layout_marginTop="14.4dp"
                    android:hint="Ваша улица" />
                <LinearLayout
                    android:orientation="horizontal"
                    android:minWidth="25px"
                    android:minHeight="25px"
                    android:layout_width="match_parent"
                    android:layout_height="58.0dp"
                    android:id="@+id/linearLayout16"
                    android:layout_marginTop="12.0dp">
                    <EditText
                        android:id="@+id/budinok"
                        android:layout_width="153.6dp"
                        android:layout_height="44.3dp"
                        android:inputType="text"
                        android:background="#1a1a1a"
                        android:layout_marginLeft="14.4dp"
                        android:textColor="#ffffffff"
                        android:gravity="left"
                        android:paddingTop="10dp"
                        android:paddingLeft="20dp"
                        android:layout_marginTop="14.4dp"
                        android:hint="Дом" />
                    <EditText
                        android:id="@+id/kvartira"
                        android:layout_width="167.7dp"
                        android:layout_height="44.3dp"
                        android:inputType="number"
                        android:background="#1a1a1a"
                        android:layout_marginLeft="14.4dp"
                        android:textColor="#ffffffff"
                        android:gravity="left"
                        android:paddingTop="10dp"
                        android:paddingLeft="20dp"
                        android:layout_marginTop="14.4dp"
                        android:hint="Квартира" />
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
                android:orientation="vertical"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="match_parent"
                android:layout_height="226.7dp"
                android:id="@+id/linearLayout15"
                android:background="#77777777">
                <TextView
                    android:text="КОНТАКТЫ"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:layout_width="match_parent"
                    android:layout_height="43.8dp"
                    android:id="@+id/clicklistener2"
                    android:textSize="22sp"
                    android:textColor="#ffffffff"
                    android:gravity="center_horizontal"
                    android:paddingTop="7dp" />
                <EditText
                    android:id="@+id/imya"
                    android:layout_width="333.9dp"
                    android:layout_height="44.3dp"
                    android:hint="Имя"
                    android:inputType="text"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp" />
                <EditText
                    android:id="@+id/familia"
                    android:layout_width="336.4dp"
                    android:layout_height="44.3dp"
                    android:inputType="text"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp"
                    android:layout_marginTop="14.4dp"
                    android:hint="Фамилия" />
                <EditText
                    android:id="@+id/telefon"
                    android:layout_width="336.4dp"
                    android:layout_height="44.3dp"
                    android:inputType="number"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp"
                    android:layout_marginTop="14.4dp"
                    android:hint="Номер телефона " />
            </LinearLayout>
            <LinearLayout
                android:orientation="vertical"
                android:minWidth="25px"
                android:minHeight="25px"
                android:layout_width="match_parent"
                android:layout_height="226.7dp"
                android:id="@+id/linearLayout15"
                android:background="#99000000">
                <TextView
                    android:text="ВАШ КОММЕНТАРИЙ"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:layout_width="match_parent"
                    android:layout_height="43.8dp"
                    android:id="@+id/clicklistener3"
                    android:textSize="22sp"
                    android:textColor="#ffffffff"
                    android:gravity="center_horizontal"
                    android:paddingTop="7dp" />
                <EditText
                    android:id="@+id/comment"
                    android:layout_width="333.9dp"
                    android:layout_height="165.5dp"
                    android:inputType="text"
                    android:background="#1a1a1a"
                    android:layout_marginLeft="14.4dp"
                    android:textColor="#ffffffff"
                    android:gravity="left"
                    android:paddingTop="10dp"
                    android:paddingLeft="20dp" />
            </LinearLayout>

And this is string that I need to send via POST request:

'
   <Order 
    CallConfirm="{CallConfirm}"
    PayMethod="{PayMethod}" 
    QtyPerson="{QtyPerson}" 
    Type="{Type}" 
    PayStateID="{PayStateID}" 
    Remark="{Remark}" 
    RemarkMoney="{RemarkMoney}" 
    TimePlan="{TimePlan}" 
    Brand="{Brand}" 
    DiscountPercent="{DiscountPercent}" 
    BonusAmount="{BonusAmount}"
    Department="{Department}"
   >
       <Customer Login="{Login}" FIO="{FIO}"/>
       <Address 
      CityName="{CityName}" 
      StationName="{StationName}" 
      StreetName="{StreetName}" 
      House="{House}" 
      Corpus="{Corpus}" 
      Building="{Building}" 
      Flat="{Flat}" 
      Porch="{Porch}" 
      Floor="{Floor}" 
      DoorCode="{DoorCode}"
     />
     
       <Phone Code="{PhoneCode}" Number="{Number}" />
       <Products>
      {Products}
       </Products>
   </Order>'

解决方案

EDIT : THIS IS NOT A XAMARIN ANSWER, THIS IS PURE JAVA ANDROID


I use this static method :

private static String  performPostCall(String requestURL, Map<String, String> postDataParams) {
    URL url;
    String response = "";
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);


        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode=conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {
            String line;
            BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
            while ((line=br.readLine()) != null) {
                response+=line;
            }
        }
        else {
            response="";
            //TODO add different responseCode (like HttpURLConnection.HTTP_NOT_FOUND (404), or error 500 etc)
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;
}

with the getPostDataString method :

private static String getPostDataString(Map<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for(Map.Entry<String, String> entry : params.entrySet()){
        //sinon on pourrait faire
        //result=result.replaceFirst("&", "");
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}

postDataParams is the map that will be passed as Post data.

You can then either set it to one key with your whole Order string, or you can set all your keys and manage them on your server.

Hope it helped.

EDIT :

Forgot to say that this is to be used in a separated thread, please use an AsyncTask

这篇关于发送从申请POST请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆