我已经通过将字典集合传递给方法来完成在Web应用程序中调用wcf服务。我想在android中使用ksoap2实现相同的功能。
这是我通过它的方式,
HttpClient httpclient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 30000);
HttpConnectionParams.setSoTimeout(httpclient.getParams(), 50000);
JSONObject InputDic = new JSONObject();
JSONObject ProfileDictionary = new JSONObject();
JSONArray InputDicArray = new JSONArray();
JSONArray ProfileDicArray = new JSONArray();
//Input Dictionary to the Common Service
try{
InputDic.put("GURefID", 0);
InputDic.put("ProfileType","Customer");
InputDic.put("SecurityToken","");
InputDic.put("SkillID", 1);
InputDic.put("WorkflowServerID", 1);
InputDic.put("XMPPUserName", "testuser");
InputDic.put("XMPPPassword", "testuser");
InputDic.put("XMPPServerName", "test");
InputDic.put("GUTranID", 12130);
//Input Profile Dictionary
EditText txtProfileCode = (EditText)findViewById(R.id.edittextprofilecode);
ProfileDictionary.put("ProfileCode", txtProfileCode.getText().toString().trim());
EditText guAddressID = (EditText)findViewById(R.id.edittextcustcode);
ProfileDictionary.put("guAddressID", txtProfileCode.getText().toString().trim());
String ProfileTitle = title.getItemAtPosition(title.getSelectedItemPosition()).toString();
ProfileDictionary.put("Title", ProfileTitle.toString().trim());
ProfileDictionary.put("Gender", "Male");
EditText txtCustName = (EditText)findViewById(R.id.edittextCustname);
ProfileDictionary.put("FirstName",txtCustName.getText().toString().trim() );
EditText txtPhone = (EditText)findViewById(R.id.edittextPhoneNo);
ProfileDictionary.put("Phonenumber", txtPhone.getText().toString().trim());
EditText txtMobile = (EditText)findViewById(R.id.edittextMobileno);
ProfileDictionary.put("Mobilenumber", txtMobile.getText().toString().trim());
EditText txtfax = (EditText)findViewById(R.id.edittextfax);
ProfileDictionary.put("Faxnumber", txtfax.getText().toString().trim());
EditText txtemail = (EditText)findViewById(R.id.edittextemail);
ProfileDictionary.put("E-mail", txtemail.getText().toString().trim());
EditText txtskype = (EditText)findViewById(R.id.edittextskype);
ProfileDictionary.put("Skypeid", txtskype.getText().toString().trim());
EditText txtgtalk = (EditText)findViewById(R.id.edittextgtalk);
ProfileDictionary.put("Googletalkid", txtgtalk.getText().toString().trim());
EditText txtTwitterid = (EditText)findViewById(R.id.edittexttwitter);
ProfileDictionary.put("Twitterid", txtTwitterid.getText().toString().trim());
EditText txtfacebook = (EditText)findViewById(R.id.edittextfacebook);
ProfileDictionary.put("Facebookid", txtfacebook.getText().toString().trim());
InputDicArray.put(InputDic);
ProfileDicArray.put(ProfileDictionary);
// Create a new HttpClient and Post Header
}
catch(Exception e){
}
try {
JSONObject InputMessage = new JSONObject();
JSONObject mParams = new JSONObject();
mParams.put("InputDictionary", InputDicArray);
mParams.put("AdditionalDictionary1", ProfileDicArray);
mParams.put("UseAdditionalDictionary", true);
mParams.put("AdditionalDictionaryName1","ProfileDictionary");
mParams.put("SecurityToken", 323);
mParams.put("SessionID", 2423);
mParams.put("UseWorkflowID",true);
mParams.put("UseGUSessionID",true);
mParams.put("WorkflowID",0);
mParams.put("WorkflowType", "");
mParams.put("WorkflowName", "Profile");
InputMessage.put("DuoWorkflowInvokeProxy",mParams);
HttpPost httppost = new HttpPost(URL);
StringEntity se = new StringEntity(InputMessage.toString(), "UTF-8");
se.setContentType("application/json;charset=UTF-8");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_LEN, String.valueOf(InputMessage.toString().length())));
httppost.setHeader("Content-type", "text/xml");
httppost.setHeader("Accept", "text/xml");
HttpResponse response = httpclient.execute(httppost);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
System.out.println("Response: ");
Log.v("hari", "Response : ");
}
catch(Exception e)
{
e.printStackTrace();
}
收到如下错误
HTTP / 1.1 400错误请求
答案 0 :(得分:0)
使用
httpost.setHeader("Accept", "application/json;odata=verbose");
httpost.setHeader("Content-type", "application/json;odata=verbose");
代替
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
因为V3有效负载当前不支持application / json