台灣最大程式設計社群網站
線上人數
798
 
會員總數:245973
討論主題:189551
歡迎您免費加入會員
討論區列表 >> Java >> Android 透過 Web service "新增"資料進資料庫
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Android 透過 Web service "新增"資料進資料庫
價值 : 20 QP  點閱數:2001 回應數:2
樓主

ALU
門外漢
0 15
180 18
發送站內信

我web service的新增功能是正常的,但是用android的ksoap2做連結時卻無法產生反應
尋求大大們的解答。
Debug是在androidHttpTransport.call(Add_SOAP_ACTION, envelope);
這行之後都沒有反應


package com.example.sqlconnect1;
import org.ksoap2.*;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.*;
import org.w3c.dom.Text;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Add_Activity extends Activity {
private TextView TV;
private EditText ET;
private EditText ET2;
private Button Send;
private Button CanCel;

private static final String NAMESPACE = "http://tempuri.org/" ;
private static final String URL = " http://localhost:60197/Service1.asmx";


private static final String Add_SOAP_ACTION = "http://tempuri.org/insert";
private static final String METHOD_NAME1 = "insert";


public void Add(){

if (android.os.Build.VERSION.SDK_INT > 9)
{
StrictMode.ThreadPolicy policy = new StrictMode
.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);
request.addProperty("addi1", ET.getText().toString());
request.addProperty("addi2", ET2.getText().toString());

/** 設定呼叫 Web Service一些值*/
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER12);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);


try {
/** 開始呼叫 Web Service*/
androidHttpTransport.call(Add_SOAP_ACTION, envelope);
TV.setText("加入成功");
/** 得到回傳值,必須使用SoapPrimitive型態來儲存,本次宣告了一個Result(SoapPrimitive型態)來儲存回傳值*/
final SoapPrimitive Result = (SoapPrimitive)envelope.getResponse();
final boolean str = Boolean.parseBoolean(Result.toString());
Log.e("Result","Value");

if(str){
TV.setText("加入成功");
} else {
TV.setText("加入失敗");
}


/** 由於回傳值是SoapPrimitive型態,而我們需要的是Boolean值,所以在此做個轉換型態*/

}
catch(Exception e) {

}


}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


setContentView(R.layout.activity_add);
TV = (TextView)findViewById(R.id.add_result);
ET = (EditText)findViewById(R.id.editText1);
ET2 = (EditText)findViewById(R.id.EnterValue);
Send = (Button)findViewById(R.id.add_enter);
CanCel = (Button)findViewById(R.id.add_cancel);


Send.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v){
Add();
}

});

CanCel.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v){
Intent intent = new Intent();
intent.setClass(Add_Activity.this,FullscreenActivity.class);
startActivity(intent);
}

});

}
}

本篇文章發表於2014-04-01 01:19
1樓
作者回應

ALU
檢舉此回應
我在點擊新增後去測試web service 結果無法使用
System.InvalidOperationException: 不允許變更 'ConnectionString' 屬性。連接目前的狀態為開啟。
於 System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value)
於 System.Data.SqlClient.SqlConnection.set_ConnectionString(String value)
於 WebService3.Service1.SNQuery(String uid, String psw) 於 c:\Users\user\Documents\Visual Studio 2012\Projects\WebService3\WebService3\Service1.asmx.cs: 行 36


這是什麼意思呢?
本篇文章回覆於2014-04-01 11:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
你的URL = " http://localhost:60197/Service1.asmx";
localhost(127.0.0.1)是被android所占用的
要改成http://你的ip/Service1.asmx
在windows裡按下執行下cmd指令輸入ipconfig就可以看到你這台電腦的ip位址
再試看看吧
本篇文章回覆於2015-09-16 21:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.