2015-01-08 4 views
0

Я новичок в этом и немного затрудняюсь понять, как правильно передать аргументы в Sub() в коде ниже. Я уже аргументировал аргументы, но никогда не использовал массив, и у меня возникли проблемы с поиском полезных результатов поиска. Может, кто-то ум укажет мне в правильном направлении?Передача аргументов в Main()

Ссылка немного удобнее для чтения. https://github.com/freshdesk/fresh-samples/blob/master/vb.net_samples/CreateTicketWithAttachment.vb

Imports System.IO 
Imports System.Net 
Imports System.Text 
Namespace FreshdeskTest 
Class CreateTicketWithAttachment 

Private Const _APIKey As String = "Api_key" 
Private Const _Url As String = "http://domain.freshdesk.com/helpdesk/tickets.json" 

' verify if you have to use http or https for your account 
Private Shared Sub writeCRLF(o As Stream) 
    Dim crLf As Byte() = Encoding.ASCII.GetBytes(vbCr & vbLf) 
    o.Write(crLf, 0, crLf.Length) 
End Sub 

Private Shared Sub writeBoundaryBytes(o As Stream, b As String) 
    Dim d As Byte() = Encoding.ASCII.GetBytes("--" & b & vbCr & vbLf) 
    o.Write(d, 0, d.Length) 
End Sub 

Private Shared Sub writeContentDispositionFormDataHeader(o As Stream, name As String) 
    Dim data As String = "Content-Disposition: form-data; name=""" & name & """" & vbCr & vbLf & vbCr & vbLf 
    Dim b As Byte() = Encoding.ASCII.GetBytes(data) 
    o.Write(b, 0, b.Length) 
End Sub 

Private Shared Sub writeContentDispositionFileHeader(o As Stream, name As String, fileName As String, contentType As String) 
    Dim data As String = "Content-Disposition: form-data; name=""" & name & """; filename=""" & fileName & """" & vbCr & vbLf 
    data += "Content-Type: " & contentType & vbCr & vbLf & vbCr & vbLf 
    Dim b As Byte() = Encoding.ASCII.GetBytes(data) 
    o.Write(b, 0, b.Length) 
End Sub 

Private Shared Sub writeString(o As Stream, data As String) 
    Dim b As Byte() = Encoding.ASCII.GetBytes(data) 
    o.Write(b, 0, b.Length) 
End Sub 

Public Shared Sub Main(args As String()) 
    Console.WriteLine("Application starting...") 
    ' Define boundary: 
    Dim boundary As String = "----------------------------" & DateTime.Now.Ticks.ToString("x") 
    ' Web Request: 
    Dim wr As HttpWebRequest = DirectCast(WebRequest.Create(_Url), HttpWebRequest) 
    wr.Headers.Clear() 
    ' Method and headers: 
    wr.ContentType = "multipart/form-data; boundary=" & boundary 
    wr.Method = "POST" 
    wr.KeepAlive = True 
' Basic auth: 
    Dim login As String = _APIKey & ":X" 
    Dim credentials As String = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(login)) 
    wr.Headers(HttpRequestHeader.Authorization) = "Basic " & credentials 

' Body: 
    Using rs As Stream = wr.GetRequestStream() 

' Email: 
    writeBoundaryBytes(rs, boundary) 
    writeContentDispositionFormDataHeader(rs, "helpdesk_ticket[email]") 
    writeString(rs, "[email protected]") 
    writeCRLF(rs) 

' Subject: 
    writeBoundaryBytes(rs, boundary) 
    writeContentDispositionFormDataHeader(rs, "helpdesk_ticket[subject]") 
    writeString(rs, "Ticket Title") 
    writeCRLF(rs) 

' Description: 
    writeBoundaryBytes(rs, boundary) 
    writeContentDispositionFormDataHeader(rs, "helpdesk_ticket[description]") 
    writeString(rs, "Ticket description.") 
    writeCRLF(rs) 

' Attachment: 
    writeBoundaryBytes(rs, boundary) 
    writeContentDispositionFileHeader(rs, "helpdesk_ticket[attachments][][resource]", "x.txt", "text/plain") 
    Dim fs As New FileStream("x.txt", FileMode.Open, FileAccess.Read) 
    Dim data As Byte() = New Byte(fs.Length - 1) {} 
    fs.Read(data, 0, data.Length) 
    fs.Close() 
    rs.Write(data, 0, data.Length) 
    writeCRLF(rs) 

' End marker: 
    writeBoundaryBytes(rs, boundary) 
    rs.Close() 
End Using 

' Response processing: 
Try 
    Console.WriteLine("Submitting Request") 
    Dim response = DirectCast(wr.GetResponse(), HttpWebResponse) 
    Dim resStream As Stream = response.GetResponseStream() 
    Dim resJson As String = New StreamReader(resStream, Encoding.ASCII).ReadToEnd() 
    Console.WriteLine(resJson) 
Catch ex As Exception 
    Console.WriteLine("ERROR") 
    Console.WriteLine(ex.Message) 
Finally 
    Console.WriteLine(Environment.NewLine) 
    Console.WriteLine(Environment.NewLine) 
End Try 
End Sub 
End Class 
End Namespace 
+4

Суб Главное, процедура запуска приложения. Аргенты есть те, которые введены в командной строке (например, 'myapp/GoFast/Task = 6'). Вы не назовете его, и вы ничего не передадите ему – Plutonix

+0

, если вы хотите указать эти параметры запуска при отладке, ** Project -> Properties -> Compile ** введите нужную командную строку в «Аргументы командной строки» – Plutonix

+0

Ок, я вижу. Итак, это предназначено для автономного консольного приложения? Это не то, что я искал. Я посмотрю, смогу ли я извлечь из него какую-либо полезную информацию и попытаться повторно использовать ее в своем приложении. Благодарю. – Josh

ответ

0

Поскольку этот код находится внутри класса, а не модуль, Main не будет считаться точкой запуска для вашего приложения. Хотя, код очень напоминает точку запуска. Может быть, вы что-то скопировали?

Чтобы ответить на вопрос о том, как передать массив, сначала необходимо создать массив, чтобы передать его.

Dim x(2) as string 'This creates 3 items in the array, 0 based 
x(0) = "Test1" 
x(1) = "Test2" 
x(2) = "Test3" 

Тогда, так как это в классе, вы должны иметь экземпляр вашего класса:

dim MyClass as new CreateTicketWithAttachment 

Затем вызовите к югу

MyClass.Main(x) 
+0

Спасибо, я попробую это. – Josh

Смежные вопросы