API调用代码在本地主机上工作但不在服务器上
Posted
技术标签:
【中文标题】API调用代码在本地主机上工作但不在服务器上【英文标题】:API calling Code working on localhost but not on server 【发布时间】:2020-12-12 05:07:10 【问题描述】:本地代码工作正常,但上传到服务器时显示 500 [内部服务器错误] 我尝试过使用单个参数,但不适用于实时环境
参数在 JSON.stringify(itemlist) 中这是我的 ajax 代码:
var itemlist = new Array();
var item =
Fnumber: Fnumber, Snumber: Snumber, Flag: Flag, Page: _pageName, bulkupdate: false, sortText: $("#hdnsorting").val(), excel: false, filtCompany: $("#hdnfilterCompanies").val(), ShowDDLvalue: ddlValue, url: "localhost"
itemlist.push(item);
$.ajax(
url: '/CompanyContact/GetContacts',
data: JSON.stringify(itemlist),
dataType: "json",
type: "POST",
cache: false,
contentType: "application/json; charset=utf-8",
success: function (data)
);
这是我的控制器方法,它具有用于参数列表的 FilterParameters 模型:
[HttpPost]
public JsonResult GetContacts(List<FilterParameters> item)
var List = _api.PostRequest<List<FilterParameters>, Contacts>(_baseAPIurl + "contacts", item, Convert.ToString(Session["AccessToken"]));
return Json(List.Result, JsonRequestBehavior.AllowGet);
这是我的 API 调用:
public async Task<List<TOut>> PostRequest<TIn, TOut>(string uri, TIn content, string token)
List<TOut> DataList = new List<TOut>();
try
using (var client2 = new HttpClient())
// token authorization
client2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
client2.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var serialized = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
var postTask = client2.PostAsJsonAsync<TIn>(uri, content);
postTask.Wait();
var result = postTask.Result;
if (result.IsSuccessStatusCode)
var readTask = result.Content.ReadAsAsync<TOut[]>();
readTask.Wait();
var Data = readTask.Result;
DataList = Data.ToList();
return DataList;
else
return DataList = null;
catch (Exception ex)
Console.WriteLine(ex.ToString());
return null;
还尝试发送 FilterParameters 模型对象的所有参数,但失败。 提前致谢。
【问题讨论】:
您能否详细介绍一下 500 内部服务器错误。这样更容易找到问题的根源 嗨 Muhammad,从 ajax 调用控制器方法时,它说:加载资源失败:服务器响应状态为 500 [Internal server error],有时会得到 404(未找到)- 某处控制器和 PostRequest 方法之间不起作用 如果服务器响应状态为 404,这意味着它无法找到您的 API,这意味着您需要重新检查从客户端构建的 url 或者你的服务器知道 _baseapiurl 还是被设置为本地的 我在网络配置中设置了 _baseapiurl。 URL 显示正确。我们需要一些 Live API 的设置吗? 【参考方案1】:当模型中有不可为空的元素并且您在帖子中缺少特定元素时,您会遇到错误代码 500。因此,请确保您提及“FilterParameters”对象中的所有元素。在你的情况下,我认为没有必要对 json 数组进行字符串化。直接发送json数组。
【讨论】:
以上是关于API调用代码在本地主机上工作但不在服务器上的主要内容,如果未能解决你的问题,请参考以下文章
Vue 组件显示在本地主机上,但不在使用 Laravel 5.4 的服务器上:Passport