我正在使用此代码将一个人的name
值发布到网页中但由于某种原因它无法工作......在某种程度上它正在发挥作用。我在代码中给出了一些打印序列,这些序列在logcat中显示....
这是我的MainActivity
public class MainActivity extends Activity {
String link="http://myweb.com/index.php";
String name1 = "akhil";
String value="name"+name1;
Button bttn1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bttn1 = (Button)findViewById(R.id.bttn1);
bttn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
try{
post_connection obj = new post_connection();
obj.connect(link,value);
}
catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
});
}
}
我的post_connection
课程如下
public class post_connection {
public void connect(String link , String value)
{
try
{
URLConnection url = new URL(link).openConnection();
if(url instanceof HttpURLConnection) {
// do stuff
System.out.println("@@@3");
System.out.println("@@@3");
System.out.println("@@@32");
((HttpURLConnection) url).setRequestMethod("POST");
((HttpURLConnection) url).setAllowUserInteraction(true);
((HttpURLConnection) url).setDoInput(true);
((HttpURLConnection) url).setDoOutput(true);
((HttpURLConnection) url).setUseCaches(true);
System.out.println("@@@4");
System.out.println("Making the request");
((HttpURLConnection)url).connect();
System.out.println("connecting.....");
DataOutputStream data = new DataOutputStream(((HttpURLConnection) url).getOutputStream());
data.writeBytes(value);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(((HttpURLConnection) url).getInputStream()));
System.out.println("@@@5");
String decodedString;
while((decodedString=bufferedReader.readLine())!=null)
{
System.out.println("decoded::"+decodedString);
}
bufferedReader.close();
}
else {
// error?
System.out.println("@@@23");
}
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
尝试网址重写如下:
url = url+"?Param1=Value1&Param2=value2";
^ Rewriter ^ Parameter Delimeter
然后发布以上编辑的网址。
答案 1 :(得分:0)
您可以尝试:
public static String makePostRequest(String url, Bundle params) throws IOException {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
for (String key : params.keySet()) {
postParameters.add(new BasicNameValuePair(URLEncoder.encode(key), URLEncoder.encode(params.getString(key))));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
httppost.setEntity(formEntity);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
return httpclient.execute(httppost, responseHandler);
}
答案 2 :(得分:0)
您可以按如下方式重写post_connection类:
public class post_connection {
public void connect(String link , String value){
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
HttpPost httpost;
String responseString = null;
// do stuff
httpost = new HttpPost(link);
/*StringEntity se = new StringEntity(value);
httpost.setEntity(se);*/
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("name", value));
UrlEncodedFormEntity formEntity = null;
try {
formEntity = new UrlEncodedFormEntity(params);
} catch (UnsupportedEncodingException e1) {
}
httppost.setEntity(formEntity);
System.out.println("Making the request");
response = httpclient.execute(httpost);
//getting the response
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpStatus.SC_OK){
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
} else{
//Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}