我正在尝试向某个网址发送httpPOST请求。这是我的代码。 我使用的是我在网上找到的ASync Task方法
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyHttpPost().execute();
}
private class MyHttpPost extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... arg0)
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://someurl");
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair(4);
nameValuePairs.add(new BasicNameValuePair("User", "abcd"));
nameValuePairs.add(new BasicNameValuePair("email", "1234"));
nameValuePairs.add(new BasicNameValuePair("password", "abcd"));
nameValuePairs.add(new BasicNameValuePair("username", "1234"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
HttpEntity httpEntity = response.getEntity();
result = httpEntity.getContent();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return true;
}
}
}
我还在清单
中声明了网络权限uses-permission android:name="android.permission.INTERNET"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
然而,在执行应用程序后,我的服务器数据库没有显示任何命中。 即使我注释了我添加数据的列表,即使是空白的httpPost,也没有任何点击。 请帮助。急。所有答案都表示赞赏。 谢谢
答案 0 :(得分:0)
尝试使用标准参数创建DefaultHTTPClient。
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
HttpClient httpClient = new DefaultHttpClient(params);
这对我来说很好。
我还使用UTF-8编码设置请求实体:
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "utf-8"));
答案 1 :(得分:0)
以上所有代码都有效但我们需要为HttpPost实现依赖,并进一步与其他服务器(如oracle等)进行通信。 依赖文件是:
编译组:&#39; cz.msebera.android&#39; ,名称:&#39; httpclient&#39;,版本:&#39; 4.4.1.1&#39;
此问题解决后