如何设置请求标头从Android应用程序发送数据到我们的服务器

时间:2013-05-28 13:42:50

标签: java android json http-headers

如何将http标头设置为从我们的Android应用程序发送json对象 我们想要使用什么类型的标头将数据从客户端发送到服务器。为什么我们使用标题,以及那个标题中的重要性。

public class HomeLayoutActivity extends Activity implements OnClickListener{

        private EditText value;
        private Button btn;
        private ProgressBar pb;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home_layout);
            value=(EditText)findViewById(R.id.editText1);
            btn=(Button)findViewById(R.id.button1);
            pb=(ProgressBar)findViewById(R.id.progressBar1);
            pb.setVisibility(View.GONE);
            btn.setOnClickListener(this);
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.home_layout, menu);
            return true;
        }

        public void onClick(View v) {
            // TODO Auto-generated method stub
                if(value.getText().toString().length()<1){

                    // out of range
                    Toast.makeText(this, "please enter something", Toast.LENGTH_LONG).show();
                }else{
                    pb.setVisibility(View.VISIBLE);
                    new MyAsyncTask().execute(value.getText().toString());      
                }


        } 

        private class MyAsyncTask extends AsyncTask<String, Integer, Double>{

            @Override
            protected Double doInBackground(String... params) {
                // TODO Auto-generated method stub
                postData(params[0]);
                return null;
            }

            protected void onPostExecute(Double result){
                pb.setVisibility(View.GONE);
                Toast.makeText(getApplicationContext(), "command sent", Toast.LENGTH_LONG).show();
            }
            protected void onProgressUpdate(Integer... progress){
                pb.setProgress(progress[0]);
            }

            public void postData(String valueIWantToSend) {
                // Create a new HttpClient and Post Header
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://floating-wildwood-1154.herokuapp.com/posts/create_a_post");

                try {
                    // Add your data
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("content", valueIWantToSend));
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    // Execute HTTP Post Request
                    HttpResponse response = httpclient.execute(httppost);

                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                } catch (IOException e) {
                    // TODO Auto-generated catch block

                }
            }
        }
    }

我不知道如何设置请求标头以便从客户端向服务器端发送数据。在我的代码中如何设置请求标头

4 个答案:

答案 0 :(得分:15)

您可以查看this

你可以用这个

HttpPost post = new HttpPost( "http://wwww.testserver.com/userAddMoney" );

post.addHeader( "X-Testing-Auth-Secret" , "kI7wGju76kjhJHGklk76" );

答案 1 :(得分:5)

你可以使用

try {
            HttpClient client = new DefaultHttpClient();  
            String getURL = "http://helloworld.com/getmethod.aspx?id=1&method=getData";
            HttpGet httpGet = new HttpGet(getURL);
            **httpGet .setHeader("Content-Type", "application/x-zip");**
            HttpResponse response = client.execute(httpGet);  
            HttpEntity resEntity = response.getEntity();  
            if (resEntity != null) {  
                        //parse response.
                        Log.e("Response",EntityUtils.toString(resEntity));
                    }
    } catch (Exception e) {
        e.printStackTrace();
    }

答案 2 :(得分:3)

试试这个:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://floating-wildwood-1154.herokuapp.com/posts/create_a_post");

// Add Headers
httppost.addHeader("key1", "value1");
httppost.addHeader("key2", "value2");

try {
    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("content", valueIWantToSend));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    // Execute HTTP Post Request
    HttpResponse response = httpclient.execute(httppost);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}

答案 3 :(得分:0)

我在.NET中编写了一个Web服务,然后在我的Android应用程序中使用kso​​ap2将数据发送到我的服务器。

看看ksoap2-android:

http://simpligility.github.io/ksoap2-android/index.html

我建议添加此库:

https://oss.sonatype.org/content/repositories/ksoap2-android-releases/com/google/code/ksoap2-android/ksoap2-android-assembly/3.0.0/ksoap2-android-assembly-3.0.0-jar-with-dependencies.jar

也包含所有依赖项。