在Android中通过Web服务发送短信
我正在尝试使用webservice呼叫发送SMS。但我这样做是有错误的 这是我正在使用的代码片段在Android中通过Web服务发送短信,android,android-asynctask,Android,Android Asynctask,我正在尝试使用webservice呼叫发送SMS。但我这样做是有错误的 这是我正在使用的代码片段 public void sendSMS(String from, String to, String msg) { if (stat == -1) { sms_url = username + "&password=" + password + "&from=" + from + "&to=" +
public void sendSMS(String from, String to, String msg) {
if (stat == -1) {
sms_url = username + "&password=" + password + "&from=" + from
+ "&to=" + to + "&message=" + msg + "";
new SendSMS().execute(sms_url);
}
}
private class SendSMS extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
for (String url : urls) {
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
result += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
@Override
protected void onPostExecute(String result) {
// textView.setText(result);
Intent intent = new Intent("com.sms.subsahara.CONFIRMACTIVITY");
startActivity(intent);
}
}
class PostService extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Login();
Log.d(LOGTAG, "Success");
return "success";
}
@Override
protected void onPostExecute(String r) {
// TODO Auto-generated method stub
super.onPostExecute(result);
String msg = "Login successful";
if (MenuActivity.status == 2) {
Log.d(LOGTAG, result);
Log.d(LOGTAG, error + " " + uid + " " + langId + " " + rank);
} else if (SendUsing.status == 0) {
if (result.substring(0, 16).trim().equals(msg)) {
Log.d(LOGTAG, " " + "Connection Test" + result);
stat = -1;
String from = composesms.sender;
String to = composesms.phoneNo;
String message = composesms.message;
sendSMS(from, to, message);
Log.d(LOGTAG, result);
// new SendSMS().execute(params);
} else {
Toast.makeText(getBaseContext(),
"Login UnSuccesful. Check Username or password",
Toast.LENGTH_SHORT).show();
}
}
}
问题是,当我这样做时,我会得到以下异常
java.lang.IllegalStateException: Target host must not be null, or set in parameters.
at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:561)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:292)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
freed 4919 objects / 298512 bytes in 153ms
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
**at com.sms.subsahara.WebMessengerActivity$SendSMS.doInBackground(WebMessengerActivity.java:272)
at com.sms.subsahara.WebMessengerActivity$SendSMS.doInBackground(WebMessengerActivity.java:1)**
请问我该如何解决这个问题
sms_url = username + "&password=" + password + "&from=" + from
+ "&to=" + to + "&message=" + msg + "";
看起来这行代码只生成url的参数,而不是完整的url
sms_url = "http://your_serviceurl.com?"+sms_url;
您是否缺少一些代码片段,没有我可以看到添加到
sms\u URL
中的实际URL(带有http://
)。此错误通常发生在您错过了http://或者即使您添加了,但对整个url进行了编码(包括http://)时。
sms_url = "http://your_serviceurl.com?"+sms_url;