Я пытаюсь отправить данные на мой сервер (vb.net) с помощью мобильных устройств.Я исследовал несколько замечательных статей на стороне клиента (Android), включая эту статью Encosia и об отправке объекта JSON с Android .
. Я создал образец класса:
Public Class OneEvaluation
Private strEmail As String
Public Property email() As String
Get
Return strEmail
End Get
Set(ByVal value As String)
strEmail = value
End Set
End Property
Private strPassword As String
Public Property password() As String
Get
Return strPassword
End Get
Set(ByVal value As String)
strPassword = value
End Set
End Property
End Class
и я создал свой веб-метод:
Public Class AsmxCodebehind
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function AndroidTest(ByVal JSON As OneEvaluation) As String '
Dim strSQLInsertCommand As String
' code block
Return "whatever"
End Function
Он строит (VS2008 sp1) без ошибок.Я не получаю ответ на Android.Если я удалю аргумент «JSON as OneEvaluation», он будет успешно опубликован в браузере и предоставит HTML-возврат;но, как написано выше ... ошибка:
System.InvalidOperationException: AndroidTest Web Service method name is not valid.
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
К вашему сведению, мой фрагмент Android выглядит следующим образом:
final String URL = "http://www3.myurl.com/JSON/service.asmx/AndroidTest"
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
JSONObject json = new JSONObject();
try{
HttpPost post = new HttpPost(URL);
json.put("email", email);
json.put("password", pwd);
StringEntity se = new StringEntity( "OneEvaluation: " + json.toString());
// post.setEntity(se);
post.setHeader("Accept", "application/json");
post.setHeader("Content-type", "application/json; charset=utf-8");
// se.setContentEncoding((Header) new BasicHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"));
post.setEntity(new ByteArrayEntity(se.toString().getBytes("UTF8")));
// post.setHeader(OneEvaluation, value)
// ResponseHandler responseHandler = new BasicResponseHandler();
response = client.execute(post);
/* Checking response */
Log.v("TAG", " JSON onItemClick fired! Position:");
if(response!=null){
Log.v("TAG", " Response :" + response.toString());
// Toast.makeText(v.getContext(), response, Toast.LENGTH_LONG);
InputStream in = response.getEntity().getContent(); //Get the data in the entity
}
}
catch(Exception e){
e.printStackTrace();
createDialog("Error", "Cannot Estabilish Connection");
Log.v("TAG", " Cannot Estabilish Connection");
}
Я не видел полный пример с обеих сторон сервера (кроме тех, кто использует jQuery) и на стороне клиента (особенно Android).Поэтому я надеюсь сохранить чужие выходные!
Я отказался от использования C # на стороне сервера, так как другие мои службы AJAX / JSON (включая те, которые возвращают JSON) находятся в vb (и работают).
Я прошу помощи с ошибкой на стороне сервера ... и любые предложения по очистке Android JSON HTTP_POST.
Заранее большое спасибо!