0

ASP EFでビルドされたRESTfulなApiを消費しています。私は自分のDBにプロシージャを持っています。これは次のとおりです。EFでストアドプロシージャを使用したAndroid Volley Error Null

ALTER PROCEDURE [Ventas].[CtasxCobxVendedor] 
@AGE CHAR(1), 
@VENDEDOR VARCHAR(10) 
AS 
BEGIN 
    SET NOCOUNT ON 
    SELECT 
    V.CLIENTE Codigo, 
    C.RazonSocialAnalitico Cliente, 
    C.DireccionAnalitico Direccion, 
    C.TelefonoAnalitico Telefono, 
    V.Gestion, 
    V.IdDos, 
    V.DCTO, 
    V.Factura, 
    V.Fecha, 
    V.Vencimiento, 
    SUM(B.DBB) Monto, 
    SUM(B.HBB) Pagos, 
    SUM(B.DBB-B.HBB) Saldo 
FROM VENTAS.VMAESTRO V 
JOIN VENTAS.CTASXCOBRAR B ON 
    (V.GESTION=B.GESTIONF 
    AND V.AGE =B.AGE 
    AND V.TIPO = B.TIPOF 
    AND V.IDDOS = B.IDDOSF 
    AND V.DCTO = B.DCTOF) 
JOIN VENTAS.vwCLIENTES C ON 
    (V.CLIENTE = C.IdAnalitico) 
WHERE 
-- V.AGE [email protected] 
    V.STA = 'A' 
    AND V.VENDEDOR = @VENDEDOR 
GROUP BY V.CLIENTE,C.RazonSocialAnalitico,C.DireccionAnalitico,C.TELEFONOAnalitico,V.Gestion,V.IdDos,V.DCTO,V.Factura,V.FECHA,V.VENCIMIENTO 
HAVING SUM(B.DBB-B.HBB) > 0.001 
ORDER BY C.RazonSocialAnalitico, V.FECHA, V.DCTO; 
RETURN 0; 
END 

私はインポート関数を作成し、VSには複合型を作成しました。だから、これは私が得たものである:

public virtual ObjectResult<CtasxCobxVendedor_Result> CtasxCobrarV(string aGE, string vENDEDOR) 
    { 
     var aGEParameter = aGE != null ? 
      new ObjectParameter("AGE", aGE) : 
      new ObjectParameter("AGE", typeof(string)); 

     var vENDEDORParameter = vENDEDOR != null ? 
      new ObjectParameter("VENDEDOR", vENDEDOR) : 
      new ObjectParameter("VENDEDOR", typeof(string)); 

     return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<CtasxCobxVendedor_Result>("CtasxCobrarV", aGEParameter, vENDEDORParameter); 
    } 

その後、私はこのケースでは、このように、私の個人的なコントローラであり、私のコントローラの一つで、このSPを呼び出そうとしました:

public IQueryable<CtasxCobxVendedor_Result1> GetCuenta(string id) 
     { 
     using (NemesisEntities ctx = new NemesisEntities()) { 
     return db.CtasxCobxVendedor("A", id).AsQueryable(); 
     } 
    } 

を、私は、このメソッドを呼び出すとその後

[{"Codigo":"1018389023","Cliente":"BAREMSA","Direccion":"Av. Cicunvalación - ITOS S/N","Telefono":"","Gestion":"15","IdDos":503,"DCTO":15001980,"Factura":1097,"Fecha":"2015-10-21T00:00:00","Vencimiento":"2015-11-20T00:00:00","Monto":1380.0000,"Pagos":0.0000,"Saldo":1380.0000},{"Codigo":"1018389023","Cliente":"BAREMSA","Direccion":"Av. Cicunvalación - ITOS S/N","Telefono":"","Gestion":"15","IdDos":509,"DCTO":15002329,"Factura":128,"Fecha":"2015-12-09T00:00:00","Vencimiento":"2016-01-08T00:00:00","Monto":1980.0000,"Pagos":0.0000,"Saldo":1980.0000},{"Codigo":"3095060012","Cliente":"BERTHA CONDORI  ORURO","Direccion":"","Telefono":"  25288136","Gestion":"15","IdDos":509,"DCTO":15002349,"Factura":148,"Fecha":"2015-12-11T00:00:00","Vencimiento":"2016-01-10T00:00:00","Monto":1450.0000,"Pagos":0.0000,"Saldo":1450.0000},{"Codigo":"1015777022","Cliente":"CADEXNOR","Direccion":"","Telefono":"","Gestion":"16","IdDos":509,"DCTO":16000384,"Factura":661,"Fecha":"2016-03-09T00:00:00","Vencimiento":"2016-04-08T00:00:00","Monto":1440.0000,"Pagos":0.0000,"Saldo":1440.0000},{"Codigo":"1006965023","Cliente":"COMIBOL","Direccion":"Plaza 6 de Agosto","Telefono":"  68224768","Gestion":"14","IdDos":10,"DCTO":14000142,"Factura":314,"Fecha":"2012-08-03T00:00:00","Vencimiento":"2012-08-08T00:00:00","Monto":2770.0000,"Pagos":0.0000,"Saldo":2770.0000},{"Codigo":"1006965023","Cliente":"COMIBOL","Direccion":"Plaza 6 de Agosto","Telefono":"  68224768","Gestion":"14","IdDos":10,"DCTO":14000143,"Factura":776,"Fecha":"2013-10-03T00:00:00","Vencimiento":"2013-11-02T00:00:00","Monto":2900.0000,"Pagos":0.0000,"Saldo":2900.0000}] 

私が接続しようとすると:それは私にこの結果を与える原因、うまく動作します:ブラウザ(「3329672」は個人IDであるこの「45896/API /出会い/ 3329672ローカルホスト」のような)上それは私のAndroidアプリにVを使ってオレーリーフレームワーク:

JsonArrayRequest re= new JsonArrayRequest(Request.Method.GET, newURL, (String)null, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 
      Toast.makeText(Cobrar.this,response.toString(),Toast.LENGTH_LONG).show(); 
      procesarRespuesta(response); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(Cobrar.this,"FUCKING NOTHING",Toast.LENGTH_LONG).show(); 
      Log.d(TAG, "Error Volley: " + error.getMessage()); 
     } 
    }); 

ここで、 "newURL"は上記のようなものです。他の説明なしで「エラー・バレー:ヌル」を教えてください。

私は実際に何を修正するか分からないので、たとえば「http://localhost:45896/api/clientes」と呼ばれる簡単なGETコールを使用すると、問題なく動作します。

私は間違っていますか?私の問題が実際にどこにあるかについての情報は得られないので、Idkはどこから始めるのですか

答えて

1

投稿された質問はhereです。

私は同じ問題に直面しています。

これはどうしてですか?

ボレーでは、timeout/socket timeout occursがエラーになります。 エラーオブジェクトはnullです。 Request クラスの2つのメソッドをオーバーライドして、そのtimeoutがあるかどうかを確認できます。

ソリューション:

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, "url", "request", new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 

      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }) { 
      @Override 
      protected void deliverResponse(JSONObject response) { 
       super.deliverResponse(response); 
      } 

      @Override 
      public void deliverError(VolleyError error) { 
       super.deliverError(error); 
      } 
     }; 

あなたは上記のコードでdeliverError方法でエラーを取得することができます。

TimeOutサーバーがで定義されたアプリケーションに応答するまでに時間がかかると発生します。

request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48, 
       0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
  • デフォルトのタイムアウトはバレーボールのための2500秒です。

あなたは以下の改善を使用してこの問題を回避することができます

  1. あなたのサーバーのパフォーマンスを向上させるために必要な
  2. それはあなたのアプリケーションの要件に合った場合は、1にretryCountを設定することができます。

ありがとうございます。

+0

ありがとうSO Much !!!!再試行回数を設定すると問題が解決しました! –

+0

@ Daniel Arteaga Iriarte:私はこの問題のために多くの時間を費やしていました。だから、他の人たちが同じことをしたくない.. !! :D – AndiGeeky

関連する問題