简体   繁体   English

如何将数据从android传输到服务器

[英]How can i transfer the data from android into server

i have create android programm that send the data in JSON format like this: 我已经创建了以JSON格式发送数据的android programm,如下所示:

public static String POST(String url, ArrayList<Pers_Ordre>  ListOrdres){
    InputStream inputStream = null;
    String result = "";
    try {

        // 1. create HttpClient
        HttpClient httpclient = new DefaultHttpClient();

        // 2. make POST request to the given URL
        HttpPost httpPost = new HttpPost(url);

        String json = "";

        // 3. build jsonObject
        JSONObject jsonObject = new JSONObject();

        for(Pers_Ordre TheOrdre : ListOrdres){
             jsonObject.accumulate("CodeClient", TheOrdre.getLe_CodeClient());
             jsonObject.accumulate("CodeDest", TheOrdre.getLe_CodeDest());
             jsonObject.accumulate("NoOrdre", TheOrdre.getLe_NoOrdre());
             jsonObject.accumulate("LeDate", "qsdf");
             jsonObject.accumulate("LeGPS", "qsdfqsdf");            
             jsonObject.accumulate("LeStatut", TheOrdre.getLe_Statut());
             jsonObject.accumulate("LeCamion", TheOrdre.getLe_Camion());
            }

        // 4. convert JSONObject to JSON to String
        json = jsonObject.toString();  

        // ** Alternative way to convert Person object to JSON string usin Jackson Lib 
        // ObjectMapper mapper = new ObjectMapper();
        // json = mapper.writeValueAsString(person); 

        // 5. set json to StringEntity
        StringEntity se = new StringEntity(json);

        // 6. set httpPost Entity
        httpPost.setEntity(se);

        // 7. Set some headers to inform server about the type of the content   
        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type", "application/json");

        // 8. Execute POST request to the given URL
        HttpResponse httpResponse = httpclient.execute(httpPost);

        // 9. receive response as inputStream
        inputStream = httpResponse.getEntity().getContent();  


        // 10. convert inputstream to string 
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);
        else 
            result = "Did not work!"; 

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    } 

    // 11. return result
    return result; 
}

and when i debug it my json data is: 当我调试它时,我的json数据是:

{"LeDate":"20\/08\/2014 09:15","LeStatut":"1","CodeClient":"140056","NoOrdre":"26754","CodeDest":"1026","LeCamion":"Camion A"}

i don't know how i consume this JSON on my WCF programm. 我不知道如何在WCF程序中使用此JSON。 i know it call it connect and call my service, because when i test with non sense data like this: 我知道它称之为“连接并致电我的服务”,因为当我使用这样的非意义数据进行测试时:

  comm_Insrt.Parameters.AddWithValue("@CODE_CLIENT", "454548");
                    comm_Insrt.Parameters.AddWithValue("@CODE_DEST", "44444");
                    comm_Insrt.Parameters.AddWithValue("@NO_ORDRE", "545454545");
                    comm_Insrt.Parameters.AddWithValue("@DATE_TAMPON", "2013-05-03 15:01:16.920");
                    comm_Insrt.Parameters.AddWithValue("@GPS_POS", "fsdgsgsg");
                    comm_Insrt.Parameters.AddWithValue("@STATUS_ORDRE", "65");
                    comm_Insrt.Parameters.AddWithValue("@CAMION", "fgfgf");
                    comm_Insrt.ExecuteNonQuery(); 

it inserted on my SQL sever 2008 R2. 它插入了我的SQL Server 2008 R2。

and here is my service: 这是我的服务:

namespace WcfService_SuiviColis
{
    // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom de classe "Service1" dans le code, le fichier svc et le fichier de configuration.
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
    public class Service1 : IService1
    {
       // public void SaveData(string CodeClient, string CodeDest, string NoOrdre, string LeDate, string LeGPS, string LeStatut, string LeCamion)
        public void SaveData(Pers_Ordre_NET Oodre)
        { 
            try
            {
                //var data = Oodre.Split('|');
                //var response = new Pers_Ordre_NET
                //{
                //    CodeClient = data[0],
                //    CodeDest = data[1],
                //    NoOrdre = data[2],
                //    LeDate = data[3]
                //};      

                using (var connectionWrapper = new Connexion())
                {
                    var connectedConnection = connectionWrapper.GetConnected();
                    string sql_Adding = "INSERT INTO [SUIVI_ORDRE]"+
                                          " ([CODE_CLIENT] ,[CODE_DEST],[NO_ORDRE],[DATE_TAMPON],[GPS_POS],[STATUS_ORDRE],CAMION)"+
                                    "VALUES (@CODE_CLIENT,@CODE_DEST,@NO_ORDRE,@DATE_TAMPON,@GPS_POS,@STATUS_ORDRE,@CAMION)";
                    SqlCommand comm_Insrt = new SqlCommand(sql_Adding, connectionWrapper.conn);
                    comm_Insrt.Parameters.AddWithValue("@CODE_CLIENT", Oodre.CodeClient);
                    comm_Insrt.Parameters.AddWithValue("@CODE_DEST", Oodre.CodeDest);
                    comm_Insrt.Parameters.AddWithValue("@NO_ORDRE", Oodre.NoOrdre);
                    comm_Insrt.Parameters.AddWithValue("@DATE_TAMPON", Oodre.LeDate);
                    comm_Insrt.Parameters.AddWithValue("@GPS_POS", Oodre.LeGPS);
                    comm_Insrt.Parameters.AddWithValue("@STATUS_ORDRE", Oodre.LeStatut);
                    comm_Insrt.Parameters.AddWithValue("@CAMION", Oodre.LeCamion);

                    //comm_Insrt.Parameters.AddWithValue("@CODE_CLIENT", "454548");
                    //comm_Insrt.Parameters.AddWithValue("@CODE_DEST", "44444");
                    //comm_Insrt.Parameters.AddWithValue("@NO_ORDRE", "545454545");
                    //comm_Insrt.Parameters.AddWithValue("@DATE_TAMPON", "2013-05-03 15:01:16.920");
                    //comm_Insrt.Parameters.AddWithValue("@GPS_POS", "fsdgsgsg");
                    //comm_Insrt.Parameters.AddWithValue("@STATUS_ORDRE", "65");
                    //comm_Insrt.Parameters.AddWithValue("@CAMION", "fgfgf");
                    comm_Insrt.ExecuteNonQuery();                   
                }
            }
            catch (Exception excThrown)
            {
                throw new Exception(excThrown.Message);
            }
        }    
    }   
}

and my Iservice: 和我的服务:

namespace WcfService_SuiviColis
{
    // REMARQUE : vous pouvez utiliser la commande Renommer du menu Refactoriser pour changer le nom d'interface "IService1" à la fois dans le code et le fichier de configuration.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
        //void SaveData(string CodeClient, string CodeDest, string NoOrdre, string LeDate, string LeGPS, string LeStatut, string LeCamion);      
        void SaveData(Pers_Ordre_NET Oodre);      
    }

    [DataContract]
    public class Pers_Ordre_NET
    {
        [DataMember]
        string _CodeClient;
        public string CodeClient
        {
            get { return _CodeClient; }
            set { _CodeClient = value; }
        }

       [DataMember]
        string _CodeDest;
        public string CodeDest
        {
            get { return _CodeDest; }
            set { _CodeDest = value; }
        }

        [DataMember]
        string _NoOrdre;
        public string NoOrdre
        {
            get { return _NoOrdre; }
            set { _NoOrdre = value; }
        }

        [DataMember]
        string _LeDate;
        public string LeDate
        {
            get { return _LeDate; }
            set { _LeDate = value; }
        }

        [DataMember]
        string _LeGPS;
        public string LeGPS
        {
            get { return _LeGPS; }
            set { _LeGPS = value; }
        }

        [DataMember]
        string _LeStatut;
        public string LeStatut
        {
            get { return _LeStatut; }
            set { _LeStatut = value; }
        }

        [DataMember]
        string _LeCamion;
        public string LeCamion
        {
            get { return _LeCamion; }
            set { _LeCamion = value; }
        }
    }

}

and web.cofig: 和web.cofig:

 <system.serviceModel>  

    <services>
        <service name="WcfService_SuiviColis.Service1" behaviorConfiguration="ServiceBehaviour">
            <!--<endpoint address="web" binding="webHttpBinding" contract="WcfService_SuiviColis.IService1" behaviorConfiguration="httpBehavior" />
              <endpoint address="" binding="basicHttpBinding"   contract="WcfService_SuiviColis.IService1"  />-->

            <endpoint address="FA" binding="webHttpBinding" contract="WcfService_SuiviColis.IService1" behaviorConfiguration="web" bindingConfiguration="defaultRestJsonp" />

        </service>
   </services>  

    <behaviors> 
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">       
          <serviceMetadata httpGetEnabled="true" />          
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
        <endpointBehaviors>
            <behavior name="web">
                <dataContractSerializer maxItemsInObjectGraph="2147483647" />
                <webHttp />
            </behavior>
        </endpointBehaviors>
    </behaviors>

      <bindings>
          <webHttpBinding>
              <binding name="defaultRestJsonp" crossDomainScriptAccessEnabled="true">
                  <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="64" maxNameTableCharCount="2147483647" />
                  <security mode="None" />
              </binding>
          </webHttpBinding>
      </bindings>  

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true">


      </serviceHostingEnvironment>




  </system.serviceModel>
 <system.webServer>


     <directoryBrowse enabled="true" />
    <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
            <add name="JSON" path="*.json" verb="*" type="c:\WINDOWS\System32\inetsrv\asp.dll" resourceType="Unspecified" preCondition="integratedMode" />
        </handlers>
  </system.webServer>

EDITED EDITED

i have tries also to get the data in string format then i will work with it like this: 我也尝试以字符串格式获取数据,然后我将像这样使用它:

   public void SaveData(String Oodre)
            { 
                try
                {
                    var data = Oodre.Split(',');
                    var response = new Pers_Ordre_NET
                    {
                        CodeClient = data[0],
                       CodeDest = data[1],
                        NoOrdre = data[2],
                       LeDate = data[3]
                   }; 

but i got error probleme deserialiosation of object type of String, found element LeDate .... 但是我遇到了错误的字符串对象类型的反序列化,发现元素LeDate ....

i have tried also like this: 我也尝试过这样:

  public void SaveData(byte[] abc)
        { 
            try
            {  

                Stream strm = new MemoryStream(abc);
                DataContractSerializer obj = new DataContractSerializer(typeof(string));
                string result = obj.ReadObject(strm).ToString();

still the same error.... How can i consume the JSON data in WCF ? 仍然是同样的错误。...我如何在WCF中使用JSON数据?

i resolve it. 我解决了。 just put the name on Data member 只需将名称放在数据成员上

 [DataContract]
    public class Pers_Ordre_NET
    {
        [DataMember(Name = "CodeClient")]
        string _CodeClient;
        public string CodeClient
        {
            get { return _CodeClient; }
            set { _CodeClient = value; }
        }

       [DataMember(Name = "CodeDest")]
        string _CodeDest;
        public string CodeDest
        {
            get { return _CodeDest; }
            set { _CodeDest = value; }
        }

        [DataMember(Name = "NoOrdre")]
        string _NoOrdre;
        public string NoOrdre
        {
            get { return _NoOrdre; }
            set { _NoOrdre = value; }
        }

        [DataMember(Name = "LeDate")]
        string _LeDate;
        public string LeDate
        {
            get { return _LeDate; }
            set { _LeDate = value; }
        }

        [DataMember(Name = "LeGPS")]
        string _LeGPS;
        public string LeGPS
        {
            get { return _LeGPS; }
            set { _LeGPS = value; }
        }

        [DataMember(Name = "LeStatut")]
        string _LeStatut;
        public string LeStatut
        {
            get { return _LeStatut; }
            set { _LeStatut = value; }
        }

        [DataMember(Name = "LeCamion")]
        string _LeCamion;
        public string LeCamion
        {
            get { return _LeCamion; }
            set { _LeCamion = value; }
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 从客户端到服务器的数据传输 - Data transfer from client to server 如何使用Server.Transfer()将文本框值从usercontrol(ascx)传递到另一个页面(aspx) - How can I pass textbox value from usercontrol(ascx) to another page (aspx) using Server.Transfer() 如何将server.transfer转移到一页,然后将server.transfer转移回原始页面 - How can I server.transfer to one page and then server.transfer back to the original 如何确定从客户端到服务器(套接字)的文件传输(数据)结束 - How to determine the end of a file transfer (data) from the client to the server (Socket) 如何从Web API重定向将数据传输到html页面? - How can I transfer data to html page from Web API redirect? 如何将数据从Microsoft Access传输到SQL Server 2008? - How to transfer data from Microsoft Access to SQL server 2008? 如何将数据从 index.razor 文件传输到 C# blazor 中的另一个 razor 文件 - How can I transfer data from index.razor file to another razor file in C# blazor 如何将我的 gridview 数据传输到另一个 aspx 页面? - How can i transfer my gridview data to another aspx page? 如何在TcpListener线程和主线程之间传输数据? - How can I transfer data between a TcpListener thread and the main thread? 如何创建用于处理异步数据传输的包装器? - How can I create a wrapper for handling Async data transfer?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM