2017-09-15 122 views
2

我想发布JSON到服务器,但代码不工作。我发现了一些使用Actionscripts 3发布JSON的例子,但我需要在代码中定义内容类型。我在这里发布我的测试代码。Actionscripts 3 POST JSON与内容头

我测试了Firefox + RESTClient中的url + header + body并且他们工作。 [1] 我敢肯定,网址是真实的,而在另一个地方工作,但在这里,我遇到错误 “错误打开URL”

URL [在这里输入的形象描述] [1]!]:” https://api.thinger.io/v2/users/ *** “

内容标题: ”应用程序/ JSON“

体:{” 在“:真}

import flash.display.Sprite; 
import flash.events.*; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 
import flash.net.URLRequestHeader; 
import flash.net.URLRequestMethod; 
import flash.net.URLVariables; 


var loader: URLLoader; 

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    request.data = new URLVariables("in:true"); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 
function configureListeners(dispatcher: IEventDispatcher): void { 
    dispatcher.addEventListener(Event.COMPLETE, completeHandler); 
    dispatcher.addEventListener(Event.OPEN, openHandler); 
    dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
    dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
    dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 
    dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 
} 

function completeHandler(event: Event): void { 
    var loader: URLLoader = URLLoader(event.target); 
    trace("completeHandler: " + loader.data); 
} 

function openHandler(event: Event): void { 
    trace("openHandler: " + event); 
} 

function progressHandler(event: ProgressEvent): void { 
    trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); 
} 

function securityErrorHandler(event: SecurityErrorEvent): void { 
    trace("securityErrorHandler: " + event); 
} 

function httpStatusHandler(event: HTTPStatusEvent): void { 
    trace("httpStatusHandler: " + event); 
} 

function ioErrorHandler(event: IOErrorEvent): void { 
    trace("ioErrorHandler: " + event); 
} 

ATN(); 

ERROR:

ERR或者:错误#2101:传递给URLVariables.decode()的字符串必须是包含名称/值对的URL编码查询字符串。

在错误$/throwError()

在flash.net::URLVariables/decode()

在flash.net::URLVariables()

在ATN_fla :: MainTimeline/ATN ()

在ATN_fla :: MainTimeline /帧1()

编辑:

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    request.data = new URLVariables(); 
    var postData: Object = {"in": true}; 
    request.data = JSON.stringify(postData); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 

OUTPUT: openHandler:[事件类型= “开放” 气泡=假或取消=假的EventPhase = 2] progressHandler加载:44总计:44

编辑2:

function ATN() { 
    loader = new URLLoader(); 
    configureListeners(loader); 

    var header: URLRequestHeader = new URLRequestHeader("Accept", "application/json"); 
    var request: URLRequest = new URLRequest("https://api.thinger.io/v2/users/***"); 
    var postData: Object = {"in": true}; 
    request.data = JSON.stringify(postData); 
    request.method = URLRequestMethod.POST; 
    request.requestHeaders.push(header); 
    try { 
     loader.load(request); 
    } catch (error: Error) { 
     trace("Unable to load requested document."); 
    } 

} 

OUTPUT 2 :

openHandler:[事件类型= “开放” 气泡=假或取消=假的EventPhase = 2] progressHandler加载:44总计:44

错误打开URL 'https://api.thinger.io/v2/users/ ***'

的httpStatusHandler:[HTTPStatusEvent类型= “则httpStatus” 气泡=假或取消=假的EventPhase = 2个状态= 400重定向=假responseURL =空]

事件。ioErrorHandler:[IOErrorEvent type =“ioError”bubbles = false cancelable = false eventPhase = 2 text =“错误#2032:流错误。 URL:https://api.thinger.io/v2/users/ ***“]

+0

'错误#2032:流错误。URL:https://api.thinger.io/v2/users/***'确定URL找不到(URL不存在) (2)** https://api.thinger.io/**应该是有效的URL吗?我看到一个_“404 Not Found”_,所以像'v2'和'users'这样的文件夹怎么存在? –

+0

网址正常。我测试了它在Firefox的RESTClient。在这里我删除了一部分URL。 –

+0

我更改了JASON数据,以前的错误消失了。现在出现新的错误。 –

回答

0

错误在于解析您提供给URLVariables构造函数的字符串。URLVariables仅用于构造名称/值对,如果您想发送JSON,只需直接设置data属性:

var postData:Object = { "in": true }; 
request.data = JSON.stringify(postData); 
+0

感谢您的回答,我更改了类似于编辑部分的代码,但发生错误。我的代码改变了吗? –

+0

发生了什么错误?您没有提供有关您的问题的任何信息 – Michael

+0

我的新代码是否正确?你可以在编辑部分看到新的错误。 –