Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android E/截击﹕;[194]BasicNetwork.performRequest:url的意外响应代码307_Android_Json_Android Volley - Fatal编程技术网

Android E/截击﹕;[194]BasicNetwork.performRequest:url的意外响应代码307

Android E/截击﹕;[194]BasicNetwork.performRequest:url的意外响应代码307,android,json,android-volley,Android,Json,Android Volley,我正试图在我的android应用程序中通过截取将json obj通过POST发送到api并捕获json响应,但我一直收到以下错误: E/截击﹕ [194]BasicNetwork.performRequest:的意外响应代码307 有一段代码发出请求: public class JsonObjectSend { private static final String TAG_action = "Action"; private static final String TAG_a

我正试图在我的android应用程序中通过截取将json obj通过POST发送到api并捕获json响应,但我一直收到以下错误: E/截击﹕ [194]BasicNetwork.performRequest:的意外响应代码307

有一段代码发出请求:

 public class JsonObjectSend
{
    private static final String TAG_action = "Action";
    private static final String TAG_acValue = "ActionValue";
    private static final String TAG_bg = "BgColor";
    private static final String TAG_id = "CampId";
    private static final String TAG_ctype = "CampType";
    private static final String TAG_adr = "ClickAddress";
    private static final String TAG_endAnim = "EndAnimation";
    private static final String TAG_expText = "ExplainText";
    private static final String TAG_imType = "ImageType";
    private static final String TAG_imgUBanner = "ImageUrlBanner";
    private static final String TAG_imgULBanner = "ImageUrlLargBanner";
    private static final String TAG_imgUMRect = "ImageUrlMediumRectange";
    private static final String TAG_imgUFBanner = "ImageUrlFullBanner";
    private static final String TAG_imgULeadBrd = "ImageUrlLeaderBoard";
    private static final String TAG_logoU = "LogoUrl";
    private static final String TAG_mainText = "MainText";
    private static final String TAG_packName = "PackageName";
    private static final String TAG_repText = "ReplaceText";
    private static final String TAG_startAnim = "StartAnimation";
    private static final String TAG_videoU = "VideoUrl";
    private static final String TAG_type = "type";
    private static final String TAG_atag = "atag";
    private static final String TAG_msg = "message";
    private static final String TAG_pix = "pixel";
    private static final String TAG_scrpt = "script";
    private static final String TAG_tkn = "token";

    public void sendobj()
    {
        JSONObject jsonBody = new JSONObject();
        try {
            jsonBody.put("DeviceId", "sdasda");
            jsonBody.put("AppId", "ECC7BCE40126408386BCFCF8AB9187E7");
            jsonBody.put("AdType", "text");
            jsonBody.put("Location", "35.7209331,51.472983");
            jsonBody.put("UserOperator", "Irancell");
            jsonBody.put("Ip", "127.0.0.1");
            jsonBody.put("NetworkType", "3G");
            jsonBody.put("DeviceType", "Android");
            jsonBody.put("DeviceBrand", "Samsung");
            jsonBody.put("Width", "0");
            jsonBody.put("Height", "0");
            jsonBody.put("TestMode", "true");


        } catch (JSONException e) {
            e.printStackTrace();
        }
        String tag_string_req = "Send_Object";
        JsonObjectRequest Req = new JsonObjectRequest(Request.Method.POST, AppConfig.API_URL, jsonBody, new Response.Listener<JSONObject>()
         {
            @Override
            public void onResponse(JSONObject response)
            {
                try
                {
                    JSONObject jObj = response;
                    boolean error = jObj.getBoolean("error");
                    if (!error)
                    {
                        String action = jObj.getString(TAG_action);
                        String actionvalue = jObj.getString(TAG_acValue);
                        String bg = jObj.getString(TAG_bg);
                        String campid = jObj.getString(TAG_id);
                        String camptype = jObj.getString(TAG_ctype);
                        String clickadr = jObj.getString(TAG_adr);
                        String endanim = jObj.getString(TAG_endAnim);
                        String exptext = jObj.getString(TAG_expText);
                        String imgtype = jObj.getString(TAG_imType);
                        String imgurlbanner = jObj.getString(TAG_imgUBanner);
                        String imgurllargebanner = jObj.getString(TAG_imgULBanner);
                        String imgurlmedrectangle = jObj.getString(TAG_imgUMRect);
                        String imgurlfullbanner = jObj.getString(TAG_imgUFBanner);
                        String imgurlleaderboard = jObj.getString(TAG_imgULeadBrd);
                        String logourl = jObj.getString(TAG_logoU);
                        String maintext = jObj.getString(TAG_mainText);
                        String packagename = jObj.getString(TAG_packName);
                        String replacetext = jObj.getString(TAG_repText);
                        String startenim = jObj.getString(TAG_startAnim);
                        String videourl = jObj.getString(TAG_videoU);
                        String type = jObj.getString(TAG_type);
                        String atag = jObj.getString(TAG_atag);
                        String msg = jObj.getString(TAG_msg);
                        String pixel = jObj.getString(TAG_pix);
                        String script = jObj.getString(TAG_scrpt);
                        String token = jObj.getString(TAG_tkn);
                        Log.d("action", action);
                    } else
                    {
                        String errorMsg = jObj.getString("error_msg");
                        Log.d("Debug", errorMsg);
                    }
                }
                catch (JSONException e)
                {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener()
        {

            @Override
            public void onErrorResponse(VolleyError error)
            {
                Log.d("error","Error");
            }
        }) {

            @Override
            protected Map<String, String> getParams() throws AuthFailureError
            {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/json; charset=utf-8");
                return params;
            }//

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(Req, tag_string_req);
    }

}//class end

有人能告诉我为什么我一直收到这个错误吗?

响应代码307表示临时重定向

请检查服务器端是否存在此问题

更多解释:

服务器将此响应发送给指示客户端获取请求的客户端 使用与先前请求相同的方法将资源复制到另一个URI。这 与302 Found HTTP响应代码具有相同的语义 例外情况是,用户代理不能更改所使用的HTTP方法:如果 在第一个请求中使用了一个POST,在 第二个请求


有关更多信息,请参见:

您可以通过在url末尾添加
/
来避免307回复代码,即
http://phoneapi.adro.co/Services/AdService.svc/GetAd/

然后使用下面的示例代码(我使用了
jsonBody
),您应该更多地检查您的web服务,因为此代码将得到400响应代码

JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonBody, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        Log.i("onResponse", response.toString());
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.i("onErrorResponse", error.toString());
    }
}){
    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
            VolleyError error = new VolleyError(new String(volleyError.networkResponse.data));
            volleyError = error;
        }

        return volleyError;
    }
};
JsonObjectRequest request=newjsonobjectrequest(request.Method.POST、url、jsonBody、newresponse.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
Log.i(“onResponse”,response.toString());
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.i(“onErrorResponse”,error.toString());
}
}){
@凌驾
受保护的截击错误解析NetworkError(截击错误截击错误){
if(volleyError.networkResponse!=null&&volleyError.networkResponse.data!=null){
截击错误=新截击错误(新字符串(截击错误.networkResponse.data));
截击错误=错误;
}
回击失误;
}
};
调试时(将断点设置为
VolleyError error=new-VolleyError(新字符串(VolleyError.networkResponse.data));
),您将获得以下信息:


服务器在处理请求时遇到错误。异常消息为“对象引用未设置为对象的实例”。有关详细信息,请参阅服务器日志。异常堆栈跟踪为:

在AdroMobileApi.Services.AdService.GetAd(AdRequest请求) 在SyncInvokeGetAd(对象,对象[],对象[]) 位于System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(对象实例、对象[]输入、对象[]输出) 位于System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&;rpc) 位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&;rpc) 位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&;rpc) 位于System.ServiceModel.Dispatcher.MessageRpc.Process(布尔isOperationContextSet)


啊哈,你能告诉我如何在服务器端解决这个问题吗?首先,你的答案太棒了!第二,你的意思是我应该检查我的PHP?所以这是一个服务器端问题?我建议您多检查它以解决400而不是307。您可以使用php搜索未设置为对象实例的
对象引用,也许某个变量为空。但是,在解决307问题后,如果您的android代码与web服务(php)一起工作,当然您不必查看php代码
    06-17 23:20:54.637  14338-14338/? I/art﹕ Late-enabling -Xcheck:jni
06-17 23:20:54.751  14338-14338/ir.adro.adrosdk I/WebViewFactory﹕ Loading com.android.webview version 37 (eng.buildbot-x86) (code 199997)
06-17 23:20:54.757  14338-14338/ir.adro.adrosdk I/LibraryLoader﹕ Loading: webviewchromium
06-17 23:20:54.758  14338-14338/ir.adro.adrosdk I/LibraryLoader﹕ Time to load native libraries: 1 ms (timestamps 9529-9530)
06-17 23:20:54.758  14338-14338/ir.adro.adrosdk I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
06-17 23:20:54.766  14338-14338/ir.adro.adrosdk V/WebViewChromiumFactoryProvider﹕ Binding Chromium to main looper Looper (main, tid 1) {39d8cd06}
06-17 23:20:54.767  14338-14338/ir.adro.adrosdk I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
06-17 23:20:54.767  14338-14338/ir.adro.adrosdk I/chromium﹕ [INFO:library_loader_hooks.cc(106)] Chromium logging enabled: level = 0, default verbosity = 0
06-17 23:20:54.771  14338-14338/ir.adro.adrosdk I/BrowserStartupController﹕ Initializing chromium process, renderers=0
06-17 23:20:54.771  14338-14338/ir.adro.adrosdk W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
06-17 23:20:54.775  14338-14338/ir.adro.adrosdk W/chromium﹕ [WARNING:resource_bundle.cc(315)] locale_file_path.empty()
06-17 23:20:54.776  14338-14338/ir.adro.adrosdk I/chromium﹕ [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful, fd=32 off=46092 len=2953
06-17 23:20:54.776  14338-14338/ir.adro.adrosdk I/chromium﹕ [INFO:aw_browser_main_parts.cc(78)] Loading webviewchromium.pak from, fd:33 off:228796 len:643667
06-17 23:20:54.780  14338-14358/ir.adro.adrosdk W/AudioManagerAndroid﹕ Requires BLUETOOTH permission
06-17 23:20:54.787  14338-14338/ir.adro.adrosdk D/libEGL﹕ loaded /system/lib/egl/libEGL_emulation.so
06-17 23:20:54.788  14338-14338/ir.adro.adrosdk D/libEGL﹕ loaded /system/lib/egl/libGLESv1_CM_emulation.so
06-17 23:20:54.797  14338-14338/ir.adro.adrosdk D/libEGL﹕ loaded /system/lib/egl/libGLESv2_emulation.so
06-17 23:20:54.806  14338-14338/ir.adro.adrosdk D/﹕ HostConnection::get() New Host Connection established 0xa363fc10, tid 14338
06-17 23:20:54.859  14338-14338/ir.adro.adrosdk W/chromium﹕ [WARNING:mailbox_synchronizer.cc(36)] MailboxSync not supported due to missing EGL image/fence support
06-17 23:20:54.871  14338-14338/ir.adro.adrosdk W/chromium﹕ [WARNING:data_reduction_proxy_settings.cc(403)] SPDY proxy OFF at startup
06-17 23:20:54.881  14338-14338/ir.adro.adrosdk W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
06-17 23:20:54.882  14338-14338/ir.adro.adrosdk W/AwContents﹕ onDetachedFromWindow called when already detached. Ignoring
06-17 23:20:54.908  14338-14364/ir.adro.adrosdk W/chromium﹕ [WARNING:proxy_service.cc(901)] PAC support disabled because there is no system implementation
06-17 23:20:54.910  14338-14379/ir.adro.adrosdk D/OpenGLRenderer﹕ Render dirty regions requested: true
06-17 23:20:54.912  14338-14338/ir.adro.adrosdk D/Atlas﹕ Validating map...
06-17 23:20:54.980  14338-14379/ir.adro.adrosdk I/OpenGLRenderer﹕ Initialized EGL, version 1.4
06-17 23:20:54.980  14338-14379/ir.adro.adrosdk D/﹕ HostConnection::get() New Host Connection established 0xa1f9fdc0, tid 14379
06-17 23:20:55.005  14338-14379/ir.adro.adrosdk D/OpenGLRenderer﹕ Enabling debug mode 0
06-17 23:20:55.023  14338-14379/ir.adro.adrosdk W/EGL_emulation﹕ eglSurfaceAttrib not implemented
06-17 23:20:55.023  14338-14379/ir.adro.adrosdk W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa1fba7a0, error=EGL_SUCCESS
06-17 23:20:55.235  14338-14377/ir.adro.adrosdk E/Volley﹕ [199] BasicNetwork.performRequest: Unexpected response code 307 for http://phoneapi.adro.co/Services/AdService.svc/GetAd
06-17 23:20:55.235  14338-14338/ir.adro.adrosdk D/error﹕ Error
JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, url, jsonBody, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        Log.i("onResponse", response.toString());
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.i("onErrorResponse", error.toString());
    }
}){
    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
            VolleyError error = new VolleyError(new String(volleyError.networkResponse.data));
            volleyError = error;
        }

        return volleyError;
    }
};