8

如何设置 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

4 回答 4

17

you can look into this

you can use this

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

post.addHeader( "X-Testing-Auth-Secret" , "kI7wGju76kjhJHGklk76" );
于 2013-05-28T14:42:05.030 回答
6

您可以使用

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();
    }
于 2013-05-28T13:52:25.530 回答
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
}
于 2013-05-28T13:57:14.610 回答
0

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

看看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

它还带有所有依赖项。

于 2013-05-28T13:50:51.473 回答